SQL-разработчик спул в TXT строку - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть bat-файл, который вызывает sql developer и выводит запрос в текстовый файл, однако результат находится в одной строке, кажется, он не знает, как определить строку.

Например, если я вручную запускаю скрипт очереди печати в sql developer, файл txt выглядит идеально так:

"Item", "Qty", "Price"

"A11"," 4 "," 0,86 "

" A12 "," 3 "," 0,56 "

" A14 "," 5 "," 0,3 "

Но если я запустил его с файлом летучей мыши, получилось так:

"Предмет", "Кол-во", "Цена", "А11", "4", "0.86" "A12 "," 3 "," 0.56 "" A14 "," 5 "," 0.3 "

Без правильного формата, когда я импортирую его в файл Excel, все данные находятся только в одномcell.

Я испробовал все виды форматов, например SET PAGESIZE, SET TERMOUT ... но ни один из них не работает.В моем другом устройстве я запустил точно такой же код, и у меня нет этой проблемы.

код файла bat:

@echo off

C:

cd C:\sqldeveloper\sqldeveloper\bin

sdcli migration -actions=mkconn,runsql -connDetails=target_oracle:oracle:XXXXX -conn=target_oracle -sql="C:\Desktop\1.sql"

1.sql:

spool "C:\Desktop\test.txt"
@C:\2.sql as script(F5);
spool off

2.sql:

Select /*csv*/ * From (
select * from item
);

Я застрял здесь на некоторое время, если у вас есть решение, пожалуйста, дайте мне знать, спасибо.

1 Ответ

0 голосов
/ 04 февраля 2019

Ответ заключается в использовании правильного интерфейса командной строки SQL Developer для задания.

У нас их два:

SDCLI - это безголовая версияполноценная программа разработчика SQL - причудливый способ сказать, без графического интерфейса.Он может выполнять такие вещи, как экспорт базы данных или вызывать функцию корзины.Использование его для запуска оператора SQL с помощью задачи «Миграция» похоже на использование огнемета для размораживания лобового стекла вашего автомобиля - хотя, возможно, это не так весело.

SQLcl - это командная строка,интерактивный интерфейс к базе данных Oracle.Это Java-версия SQL * Plus.Он имеет тот же код, что и SQL Developer, когда речь идет о создании соединений, выполнении сценариев и т. Д., Но он составляет всего 20 МБ против 200 + МБ, и для него требуется только JRE против JDK.

Обе эти программыв папке sqldeveloper \ bin - , но SQLcl также является отдельным, поддерживаемым продуктом .

Итак, чтобы сделать то, что вы хотите, вам нужно изменить это:

sdcli migration -actions=mkconn,runsql -connDetails=target_oracle:oracle:XXXXX -conn=target_oracle -sql="C:\Desktop\1.sql"

на это:

sql user / pwd @ server: port / service @c: \ users \ jdsmith \ desktop \ 1.sql

И ваш 1.sql может быть таким:

spool c:\users\jdsmith\desktop\locations-so.csv
Select /*csv*/ * From locations;
spool off
exit

Что дает нам это

enter image description here

Бонус: SQLcl будет проходить через это НАМНОГО быстрее.

...