【发布时间】:2022-03-17 21:04:50
【问题描述】:
我使用以下查询生成了一个 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;
【问题讨论】:
-
您使用空格作为分隔符;要构建 CSV,您应该添加一个分隔符,比如逗号,而不是空格。此外,您每行打开和关闭文件一次,而您最好在循环之外执行此操作。甚至,你不是在变量 z2 中连接了太多的内容吗?
-
好的,谢谢 Aleksej。但是如何获取csv第二列中的ename数据
-
如果您使用空格作为分隔符,您将始终只有一列。
-
那么,我应该用什么来分隔列?
-
这取决于您的要求。通常的分隔符是逗号,但你可以使用分号、管道,任何你需要的东西