Мне нужно, чтобы spool csv из таблицы в Oracle, используя sqlplus. Ниже формат требуется:Форматирование заголовка при буферизации csv-файла в sqlplus
"HOST_SITE_TX_ID","SITE_ID","SITETX_TX_ID","SITETX_HELP_ID"
"664436565","16","2195301","0"
"664700792","52","1099970","0"
Ниже приводится соответствующая часть сценария оболочки я писал:
sqlplus -s $sql_user/[email protected]$sid <<eof>> /dev/null
set feedback off
set term off
set linesize 1500
set pagesize 11000
--set colsep ,
--set colsep '","'
set trimspool on
set underline off
set heading on
--set headsep $
set newpage none
spool "$folder$filename$ext"
select '"'||PCL_CARRIER_NAME||'","'||SITETX_EQUIP_ID||'","'||SITETX_SITE_STAT||'","'||SITETX_CREATE_DATE||'","'||ADVTX_VEH_WT||'"'
from cvo_admin.MISSING_HOST_SITE_TX_IDS;
spool off
(я использовал некоторые комментировали заявления в, чтобы показать то, что я пытался, но не мог «т получить работу)
выход я получаю это:
'"'||PCL_CARRIER_NAME||'","'||SITETX_EQUIP_ID||'","'||SITETX_SITE_STAT||'","'||SITETX_CREATE_DATE||'","'||ADVTX_VEH_WT||'"'
"TRANSPORT INC","113","00000000","25-JAN-13 10.17.51 AM",""
"TRANSPORT INC","1905","00000000","25-JAN-13 05.06.44 PM","0"
который показывает что заголовок перепутан - он буквально печатает всю строку, которая должна была интерпретироваться как оператор sql, как в случае с отображаемыми данными.
Опции Я рассматривающие:
1) Использование colsep
set colsep '","'
spool
select * from TABLE
spool off
Это вводит другие проблемы, как данные, имеющие начальные и конечные пробелы, первые и последние значения в файлах не заключаются в кавычки
HOST_SITE_TX_ID"," SITE_ID"
" 12345"," 16"
" 12345"," 21
Я пришел к выводу, что этот метод дает мне больше изжоги, чем тот, который я описал ранее.
2) Получение файла и использование регулярного выражения для изменения заголовка.
3) Оставив заголовок полностью вручную, добавив строку заголовка в начале файла, используя скрипт
Вариант 2 является более выполнимым, но я все еще был заинтересован в выяснении, если там может быть лучше способ форматировать заголовок каким-то образом, поэтому он входит в обычный формат csv, (с разделителями-запятыми, с двойной кавычкой).
Я стараюсь сделать как можно меньше жесткого кодирования - таблица, которую я экспортирую, содержит около 40 столбцов, и в настоящее время я запускаю скрипт для около 4 миллионов записей - разбивая их на партию по 10K каждый. Я был бы очень признателен за любые предложения, даже совершенно отличные от моего подхода - я программист в обучении.
Мне очень трудно увидеть, как это ответ на заданный здесь вопрос. –