powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / spexp - скрипт для экспорта
16 сообщений из 16, страница 1 из 1
spexp - скрипт для экспорта
    #38234123
_Nikotin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С помощью spexp можно относительно просто и быстро вытащить данные из базы, не создавая никаких объектов в ней (что может быть полезно при ro/mount или жестком change control). С разумными ограничениями может работать хоть в nomount. Изначально писалось чтобы удобно вытаскивать данные из v$/x$. Примеры и ссылка на скрипт - spexp .
...
Рейтинг: 0 / 0
spexp - скрипт для экспорта
    #38234126
wurdu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очень круто. Спасибо!
...
Рейтинг: 0 / 0
spexp - скрипт для экспорта
    #38234292
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_NikotinС помощью spexp можно относительно просто и быстро вытащить данные из базыэто функциональный аналог оракловой transx?
...
Рейтинг: 0 / 0
spexp - скрипт для экспорта
    #38234309
_Nikotin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-,

Разверни мысль, желательно с примерами. Перед тем как за это взяться я пробовал несколько способов, но по тем или иным причинам отказывался от них. С xml пробовал markup и xmlgen.
...
Рейтинг: 0 / 0
spexp - скрипт для экспорта
    #38234491
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_NikotinРазверни мысльсмысл твоего скрипта - перенос данных? Оракл предлагает беззаботный transx.

выгрузить
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
oracle@хост:~> transx -s "localhost:1521:СИД" я пароля vvers.xml 'V$VERSION'
oracle@хост:~> cat vvers.xml
<?xml version="1.0" ?>
<table name="V$VERSION">
   <lookup-key/>
   <columns>
      <column name="BANNER" type="string"/>
   </columns>
   <dataset>
      <row>
         <col name="BANNER">Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production</col>
      </row>
      <row>
         <col name="BANNER">PL/SQL Release 11.2.0.3.0 - Production</col>
      </row>
      <row>
         <col name="BANNER">CORE        11.2.0.3.0      Production</col>
      </row>
      <row>
         <col name="BANNER">TNS for Linux: Version 11.2.0.3.0 - Production</col>
      </row>
      <row>
         <col name="BANNER">NLSRTL Version 11.2.0.3.0 - Production</col>
      </row>
   </dataset>
</table>


и загрузить данные в табличку:
Код: sql
1.
oracle@хост:~> transx "localhost:1521:KPK3" я пароля vvers.xml


создавать табличку оно само не умеет, хотя на уровне еёйного api прикрутить можно.
для наглядности можно набросать получение ddl через xquery (без мапинга типов xml-sql это просто):
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
oracle@хост:~> java oracle.xquery.XQLPlus -s vv.xql
create table V$VERSION(
BANNER string
);

oracle@хост:~> cat vv.xql
string-join(
  ("create table ", fn:doc('vvers.xml')/table/@name, "(
",
   string-join(
     for $c in fn:doc('vvers.xml')/table/columns/column
     return fn:concat($c/@name, " ", $c/@type),
     ",
"
   ),
  "
);"
  ), ""
)
...
Рейтинг: 0 / 0
spexp - скрипт для экспорта
    #38235148
_Nikotin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-,

Из миннусов:
- на первом попавшемся сервере не оказалось явы: /export/oracle/product/11.2.0.2/bin/transx: line 3: java: command not found
- не будет работать с mount
- надо знать пароль
- размер экспорта (у меня получилось для xml в 3.6 раз толще на dba_hist_active_sess_history)
...
Рейтинг: 0 / 0
spexp - скрипт для экспорта
    #38235547
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Nikotin,

спасибо! здОрово.
в смысле идей для развития - напрашивается генерация csv+контрольника для лодера
...
Рейтинг: 0 / 0
spexp - скрипт для экспорта
    #38235571
_Nikotin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orawish,

Здесь главное вовремя остановиться чтобы не впасть в полнейшее велосипедостроение. Максимум что можно прикрутить это pipe+gzip на лету.
...
Рейтинг: 0 / 0
spexp - скрипт для экспорта
    #38235719
_Nikotin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_NikotinМаксимум что можно прикрутить это pipe+gzip на лету.
Собственно говоря прикрутил
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
SQL> @spexp -s hash

*** spexp.sql v1.0 beta - (c) Valentin Nikotin (valentinnikotin.com) ***

Start desc table
Start to parse desc table
Start to apply format for columns
Start to create table creating cursor
Start to create exporting cursor
Start spooling file spexp_dba_hist_active_sess_history.sql
Elapsed time : +000000000 00:00:00.837487000
File size : 1158364
Object/query has been exported into file spexp_dba_hist_active_sess_history.sql

SQL> @spexp -s hash -gz

*** spexp.sql v1.0 beta - (c) Valentin Nikotin (valentinnikotin.com) ***

Start desc table
Start to parse desc table
Start to apply format for columns
Start to create table creating cursor
Start to create exporting cursor
Start spooling file spexp_tmpp_20130422214204.pip
Elapsed time : +000000000 00:00:00.884018000
File size : 99574
Object/query has been exported into file spexp_dba_hist_active_sess_history.sql.gz
SQL> 
SQL> !ls -crtl | tail -n 2
-rw-r--r--  1 oracle oinstall  1158364 Apr 22 21:42 spexp_dba_hist_active_sess_history.sql
-rw-r--r--  1 oracle oinstall    99574 Apr 22 21:42 spexp_dba_hist_active_sess_history.sql.gz
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
spexp - скрипт для экспорта
    #39615688
Сигарет
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Nikotin,

зачем этот монстр когда можно просто
spool
select
?
...
Рейтинг: 0 / 0
spexp - скрипт для экспорта
    #39615689
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Сигарет,

так основная идея была не просто вытаскивать данные, а перетаскивать их к себе в базу с поддержкой всех типов. Сейчас-то, конечно, стало проще с sqlcl, но и у него есть косяки, например в формате insert:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
SQL> create table t_clob
  2*  as select to_clob(q'[bla 'blabla' ; aa; bb|aazz'"]') cl from dual;
Table T_CLOB created.

SQL> set sqlformat insert
SQL> select * from t_clob;
REM INSERTING into T_CLOB
SET DEFINE OFF;
Insert into T_CLOB (CL) values ('bla ''blabla'' ; aa; bb|aazz''"');

SQL> set sqlformat csv


SQL> select * from t_clob;
"CL"
"bla 'blabla' ; aa; bb|aazz'"""



SQL> set sqlformat xml


SQL> select * from t_clob;
<?xml version='1.0'  encoding='UTF8' ?>
<RESULTS>
        <ROW>
                <COLUMN NAME="CL"><![CDATA[bla 'blabla' ; aa; bb|aazz'"]]></COLUMN>
        </ROW>
</RESULTS>
SQL> set sqlformat loader

SQL> select * from t_clob;
 null|


SQL> set sqlformat json

SQL> select * from t_clob;
{"results":[{"columns":[{"name":"CL","type":"NUMBER"}],"items":
[
{"cl":"bla 'blabla' ; aa; bb|aazz'\""}]}]}

...
Рейтинг: 0 / 0
spexp - скрипт для экспорта
    #39615690
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
та же проблема с xml:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SQL> create table t_clob
  2*  as select to_clob(q'[bla 'blabla' ; aa; bb|aazz'qwe]zzz'asd"]') cl from dual;
Table T_CLOB created.

SQL> set sqlformat xml
SQL> select * from t_clob;
<?xml version='1.0'  encoding='UTF8' ?>
<RESULTS>
        <ROW>
                <COLUMN NAME="CL"><![CDATA[bla 'blabla' ; aa; bb|aazz'qwe]zzz'asd"]]></COLUMN>
        </ROW>
</RESULTS>

...
Рейтинг: 0 / 0
spexp - скрипт для экспорта
    #39615692
set markup csv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xtenderСейчас-то, конечно, стало проще с sqlcl"Сейчас-то" и с sqlplus стало "проще".
...
Рейтинг: 0 / 0
spexp - скрипт для экспорта
    #39615699
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
set markup csv,

A clob/blob?)
...
Рейтинг: 0 / 0
spexp - скрипт для экспорта
    #39615705
Сигарет
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xtender,

твой пример отлично работает в sqlplus
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SQL> create table t_clob as select to_clob(q'[bla 'blabla' ; aa; bb|aazz'"]') cl from dual;

Table created.

SQL> select * from t_clob;

CL
--------------------------------------------------------------------------------
bla 'blabla' ; aa; bb|aazz'"
или весь сыр-бор из-за лобов больше 4к когда одним литералом не обойдешься?
...
Рейтинг: 0 / 0
spexp - скрипт для экспорта
    #39617851
Valergrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, попробую!
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / spexp - скрипт для экспорта
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]