【发布时间】:2023-03-10 00:19:01
【问题描述】:
我需要用将输出 .xlsx 文件的代码替换当前在 SQL Developer 中创建过程的过程,以将查询的输出写入 CSV。我已经对该主题进行了一些粗略的研究,但答案似乎超出了我的想象。
我试图模仿我在 google/stack overflow 上找到的解决方案,但无济于事。
CSV 程序示例:
create or replace PROCEDURE EXAMPLE_FILE_CSV AS
CURSOR c_data IS
‘QUERY HERE’;
v_file UTL_FILE.FILE_TYPE;
BEGIN
v_file := UTL_FILE.FOPEN(location => 'EXTRACT_DIR',
filename => 'EXAMPLE_FILE.CSV',
open_mode => 'w',
max_linesize => 32767);
FOR cur_rec IN c_data LOOP
UTL_FILE.PUT_LINE(v_file,
cur_rec.COL1 || ',' ||
cur_rec.COL2 || ',' ||
cur_rec.COL3 || ',' ||
cur_rec.COL4 || ',' ||
cur_rec.COL5 || ',' ||
cur_rec.COL6 ;
END LOOP;
UTL_FILE.FCLOSE(v_file);
EXCEPTION
WHEN OTHERS THEN
UTL_FILE.FCLOSE(v_file);
RAISE;
END;
【问题讨论】:
-
解决方案将取决于您使用的第 3 方程序。您使用哪个程序取决于数据的大小。开源选项可以很好地创建精美的 Excel 文件,但前提是行数相对较少。如果您必须导出十万行,那么只有商业软件可以处理这种大小。
标签: sql oracle plsql oracle-sqldeveloper