Как thatjeffsmith любезно отметил, hopefull y эта ошибка исправлена в следующей версии. До тех пор вы можете выполнить желаемые результаты с помощью SQLcl (современный SQL * Plus, который включен и используется SQLDeveloper 4.1.2) в сочетании со сценарием SED.
SQLcl находится здесь: $ SQLDEV_HOME \ sqldeveloper \ bin \ sql. $ SQLDEV_HOME - это просто каталог установленной версии SQLDeveloper.
В вашем примере вы генерируете два отдельных выходных файла A.txt и B.txt из одного файла SQL. Мой следующий предложенный метод потребует, чтобы это было разбито на два отдельных файла SQL: A.sql и B.sql.
A.sql:
set echo off
set feedback off
set termout off
select /*csv*/ * from A where rownum <= 1000;
B.sql:
set echo off
set feedback off
set termout off
select /*csv*/ * from B where rownum <= 1000;
Ниже содержимое одной строки моей SED сценарий под названием "удалить-первых наводкой-line.sed":
0,/^$/{//d}
«0» означает, что следующий следующий командный блок будет применен только к первой строке.
"/^$ /" определяет шаблон регулярного выражения для соответствия. «^» - это начало строки, а «$» - это маркер конца строки, поэтому этот шаблон соответствует только строкам, которые не имеют абсолютно никакого контента, а не пробелов ... ничего. Если вы хотите удалить строки, которые могут содержать пробелы (вкладки, пробелы), тогда вы можете попробовать эту команду SED: 0,/^ [[: пробел:]] * $/{// d}
" // d "определяет, что скрипт должен удалить найденный сопоставленный шаблон.
Для получения дополнительной информации об этом сценарии SED см .: https://unix.stackexchange.com/questions/75424/remove-only-the-first-blank-line-sed.
Итак, чтобы удалить первую пустую строку из выходных данных каждого файла SQL, A.sql и B.sql, они должны выполняться отдельно с использованием SQLcl, а затем вывод должен быть отправлен из SQLcl через следующий скрипт SED, как следующим образом:
$SQLDEV_HOME\sqldeveloper\bin\sql -s scott/[email protected] @A.sql | sed -f remove-first-blank-line.sed > A.txt
$SQLDEV_HOME\sqldeveloper\bin\sql -s scott/[email protected] @B.sql | sed -f remove-first-blank-line.sed > B.txt
«-s» является «молчание» вариантом для SQLcl (например, SQL * Plus), который гарантирует, что нет базы данных информации Логина выводится cluttter своего выходного файла.
"|" все строки выводятся из SQLcl через данный скрипт SED.
«>» записывает все выходные данные сценария SED в выходной файл «mysql.out». Если вам нужно добавить больше данных в этот же файл с помощью другого SQL-скрипта, используйте «>>», чтобы вы могли добавлять данные в файл вместо перезаписи файла.
ПРИМЕЧАНИЕ. Да, вы также можете использовать команду SED непосредственно в командной строке, но для этого часто требуется экранирование специальных символов различными способами в зависимости от того, на какой ОС вы работаете. Я нахожу, что я гораздо чаще могу повторно использовать сценарии SED на разных платформах (например, Linux и Windows), когда я сохраняю команды SED в коротких хорошо известных файлах SED-скриптов.
Последующая обработка в порядке. Получение SQL * Plus для вывода CSV-файла кажется довольно сложным, к сожалению: http://stackoverflow.com/q/643137/238421. –