Как добавить заголовок в файл .csv? - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть несколько файлов .csv, которые я вывожу на электронную почту для отчетности.Я доволен этим.НО, я хочу сделать отчеты немного более читабельными, добавив «Заголовок»

. Это всего лишь пример структуры столбца в настоящее время ... Я хотел бы добавить кое-что перед всем этим, что имеет "Заголовок "

create or replace procedure EST_PROC is
file_handle UTL_FILE.file_type;
v_csv_name varchar2(40);
v_link_name varchar2(10);
begin

SELECT tablename into v_csv_name
FROM table_tracker
WHERE
CREATED_AT = (select MAX(CREATED_AT) from table_tracker);

select distinct link_name into v_link_name from link_name;

file_handle := utl_file.fopen('ESTIMATES_CSV',
v_csv_name||'.csv',
'w', 32767);
utl_file.put_line(file_handle, 'TARGET_TABLESPACE,MAX_ALLOC_GB,ALLOC_GB,USED_GB,PERC_USED');
for rws in (select TARGET_TABLESPACE,
MAX_ALLOC_GB,
ALLOC_GB,
USED_GB,
PERC_USED
from ESTIMATE where link = v_link_name)

loop
utl_file.put_line(file_handle,
rws.TARGET_TABLESPACE || ',' ||
rws.MAX_ALLOC_GB || ',' ||
rws.ALLOC_GB || ',' ||
rws.USED_GB || ',' ||
rws.PERC_USED -- your columns here
);
end loop;
utl_file.fclose(file_handle);
end EST_PROC;

^ Это создает файл .csv в каталоге на сервере, я просто хочу заголовок заранее.

Ответы [ 2 ]

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

IMO ваш первый подход (написание заголовка с использованием UTL_FILE.PUT_LINE перед выводом данных .csv) кажется разумным.

Однако ... если вас это не устраивает, вы можете попытаться изменить курсор навернуть заголовок перед данными, указав UNION'ом:

SELECT 'Y' AS IS_TITLE,
       'TGTBSP,MAX GB,ALLOC GB,USED GB,PERC DB,PERC USED' AS TARGET_TABLESPACE,
       NULL AS MAX_ALLOC_GB,
       NULL AS ALLOC_GB
       NULL AS USED_GB,
       NULL AS PERC_GB,
       NULL AS PERC_USED
  FROM DUAL
UNION ALL
select 'N' AS IS_TITLE,
       TARGET_TABLESPACE,
       MAX_ALLOC_GB,
       ALLOC_GB,
       USED_GB,
       PERC_USED
  from ESTIMATE
  where link = v_link_name

Теперь, когда вы получаете строку с IS_TITLE = 'Y', вы выводите только столбец TARGET_TABLESPACE, который содержит ваши заголовки.Если IS_TITLE = 'N' вы выводите все поля данных с соответствующим форматированием, запятыми и т. Д.

Удачи.

РЕДАКТИРОВАТЬ

На основе приведенного ниже комментария добавьте следующеесразу после UTL_FILE.FOPEN вызова:

UTL_FILE.PUT_LINE(file_handle, 'G''day. This output shows blah blah blah...');
UTL_FILE.PUT_LINE(file_handle, ' ');

Дайте этому шанс.

Всего наилучшего.

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

Это то, что вы ищете?

select 'Title' as Col1, TARGET_TABLESPACE,
MAX_ALLOC_GB,
ALLOC_GB,
USED_GB,
PERC_USED
from ESTIMATE where link = v_link_name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...