如何从oracle表数据生成.csv文件?

时间:2017-04-27 07:05:45

标签: plsql utl-file

我使用以下查询生成了一个csv文件,但所有列数据都在csv文件的一列中。请帮我分隔这些列数据。

create or replace procedure csv_generate as
CURSOR c1 is SELECT * FROM emp;
v1 c1%rowtype;
z1 VARCHAR2(2000);
z2 VARCHAR2(2000);
f1 utl_file.file_type;
BEGIN
FOR i IN c1
loop
--play(i.ename);
f1:=utl_file.fopen('TEST_DIR1','out.dbf','W');
z1:=i.empno||' '||i.ename||'    '||i.JOB||'   '||i.sal||'  '||i.deptno;
z2:=z2||chr(10)||z1;
utl_file.put_line(f1,z2);
utl_file.fclose(f1);
END loop;
--utl_file.put_line(f1,z2);
END;

1 个答案:

答案 0 :(得分:0)

逗号分隔符有效。

create or replace procedure text_generate as
CURSOR c1 is SELECT * FROM emp;
v1 c1%rowtype;
z1 VARCHAR2(2000);
z2 VARCHAR2(2000);
f1 utl_file.file_type;
BEGIN
f1:=utl_file.fopen('TEST_DIR1','out.xls','W');
FOR I IN C1
loop
z1:=i.empno||','||i.ename||','||i.JOB||','||i.sal||','||i.deptno;
Z2:=Z2||CHR(10)||Z1;
END LOOP;
UTL_FILE.PUT_LINE(F1,Z2);
utl_file.fclose(f1);
END;