来自sqlplus的csv输出格式在Unix脚本中运行

时间:2009-11-09 23:51:26

标签: csv format sqlplus

我需要从sqlplus查询格式化csv输出文件。 char和varchar输出字段在表中的最大列大小中出现,这意味着很多列都有额外的空格,加上逗号分隔符。如何摆脱我的csv文件中的额外空白?另外我怎样才能在数字字段周围得到“”?

2 个答案:

答案 0 :(得分:2)

您必须将字段连在一起,并自行添加引号。另外,不要忘记转义数据中的任何双引号。除非您的数据包含逗号或双引号,否则双引号并非绝对必要,但添加它们并没有什么坏处。

SELECT '"' || numcol || '",',
       '"' || REPLACE(strcol0, '"', '""') || '",',
       '"' || REPLACE(strcol1, '"', '""') || '"'
  FROM some_table;

在你运行它之前,你可能想要关闭标题和反馈,然后假脱机到文件。

SQL> set heading off
SQL> set feedback off
SQL> set pagesize 0
SQL> spool output.csv
SQL> SELECT ... FROM ...;
SQL> spool off

答案 1 :(得分:0)

您可以使用trim函数删除前导/尾随空格:

http://www.adp-gmbh.ch/ora/sql/trim.html

SELECT TRIM(col) FROM table;

不确定为什么要获取数字字段的引号:可能与您将列连接在一起的方式有关?

正如D.Shawley所问 - 如果您可以在此处发布一些用于生成CSV的示例SQL,将会有所帮助。