Экспорт и вставка данных CLOB, содержащих операторы SQL, с помощью SQL Developer - PullRequest
0 голосов
/ 09 мая 2018

У меня есть таблица со столбцом CLOB, содержащая код SQL. Теперь я хочу перенести контент из базы данных разработчиков в продуктивную. Я использую следующий скрипт для экспорта содержимого таблицы dev:

set long 100000
set lines 1000
spool d:\export.sql
select /*insert*/* from myTable;
spool off

Однако импорт в таблицу prod не работает из-за ' символов в коде SQL. Сгенерированный оператор вставки выглядит следующим образом:

insert into myTable (id, name, sql) 
values (1, 'John', 'select * /* this is a hint */ 
                    from table1 
                    where attr1 = 'hi,you' and attr2 = 'me, too')

Как мне вставить это CLOB или как лучше его экспортировать?

1 Ответ

0 голосов
/ 09 мая 2018

Я бы использовал Data Pump, если он доступен.

Если нет, я бы использовал SQL * Loader.

Что вы можете сделать, это использовать SQL Developer, чтобы выгрузить вашу таблицу в настройку SQL * Loader, каждый CLOB будет записан в файл, и их можно будет загрузить без проблем, подобных тому, что вы видите.

Я написал это здесь о том, как сделать это с BLOBS, но будет такой же процесс.

enter image description here

Выходными данными будут все файлы, необходимые для перемещения вашей таблицы в новую систему, управляющий файл, поток данных и все большие объекты.

После того, как у вас есть файлы, вам необходимо убедиться, что у вас установлен клиент Oracle или установлен полный клиент Instant Instant.

Это даст вам доступ к SQL * Loader.

enter image description here

Это утилита командной строки, без графического интерфейса. Он работает так же, как SQL * Plus. Вы должны убедиться, что ваш Oracle ENV настроен, чтобы вы могли запустить его и подключиться.

Но.

Все, что вам нужно, находится в ZIP, который SQLDev собрал для вас, самый большой кусок - .ctl (контрольный файл).

Docs

sqlldr scott CONTROL=ulcase1.ctl ulcase1.log

'scott' - это имя пользователя базы данных, оно попросит вас ввести пароль. Вы замените ulcase1.ctl для файла ctl, который вы получили от SQLDev. Бит журнала является необязательным, но ВАЖНО.

Кстати, это должно работать БЫСТРО.

Если вы запускаете это на своем компьютере, ваша строка подключения будет больше похожа на

sqlldr hr@server:port/service 
...