Пакетный файл Windows, вызывающий блок Oracle PL / SQL - проблема с форматированием - PullRequest
1 голос
/ 14 марта 2019

У меня есть файл DB.bat, который содержит блок PL / SQL, как показано ниже. Проблема здесь, с которой я сталкиваюсь, состоит в том, что извлечение, экспортированное в csv, имеет текстовый формат. Мне нужно иметь это в табличной структуре. Подскажите пожалуйста, как добиться табличного формата в csv после спула.

C: \ рабочий стол \ DB.bat:

call sqlplus ID/pwd@db @c:\desktop\code.sql

C: \ рабочий стол \ code.sql:

set head off
set feed off
set pagesize 0
spool c:\desktop\DB.csv
--PL/SQL Block ---
spool off
set head on
set feed 6
quit

Ответы [ 2 ]

1 голос
/ 14 марта 2019

Непонятно, о чем вы спрашиваете, но ... Чтобы вывести информацию из блока PL / SQL в файл спула, вам понадобятся две вещи: set serveroutput on в вашем скрипте sql * plus и отправка вашей информации dbms_output.put_line в вашем блоке PL / SQL. Вот пример:

set head off
set feed off
set pagesize 0
set serveroutput on
spool c:\desktop\DB.csv
begin
  dbms_output.put_line('test1,test2,test3');
end;
/
spool off

Если под "PL / SQL block" вы имеете в виду простой SQL-запрос, то ответ Олафура, вероятно, - то, что вы ищете.

1 голос
/ 14 марта 2019

в табличном виде, как в:

Фиксированная ширина столбца?

lpad(col1,*100) || lpad(col2,*100) || lpad(col3,*100) || etc..

, где * 100 превышает максимальный размер текста для этого столбца

разделителями

col1 || chr(9) || col2 || chr(9) || col3 || etc...

Где chr (9) - Tab и может быть чем угодно. || '|' || для трубы, || ',' || для запятой и т.д ..

Табличные форматы в текстовых файлах, CSV или «разделенные запятыми файлы» бывают разных видов, что вы ищете?

С уважением Олафур

ps, tab delimited example

set serveroutput on
begin
  for i in (select tablespace_name || chr(9) || table_name || chr(9) || to_char(last_analyzed, 'yyyy-mm-dd hh24:mi:ss') as line from user_tables order by table_name) loop
    dbms_output.put_line(i.line);
  end loop;
end;
set serveroutput off
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...