如何在.csv文件中添加标题?

时间:2019-02-15 00:41:38

标签: oracle csv plsql

我有一些.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 :(得分:1)

IMO,您的第一种方法(在输出.csv数据之前使用UTL_FILE.PUT_LINE编写标题)似乎很合理。

但是...如果您不满意,可以尝试通过将UNION放入其中来更改光标以在数据之前返回标题:

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, ' '); 调用后立即添加以下内容:

{{1}}

给个机会。

祝一切顺利。

答案 1 :(得分:0)

这是你在找什么吗?

select 'Title' as Col1, TARGET_TABLESPACE,
MAX_ALLOC_GB,
ALLOC_GB,
USED_GB,
PERC_USED
from ESTIMATE where link = v_link_name