2009-11-09 80 views
0

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

+0

请注意你在这里要求什么,但一个好的开始将包括一些示例输入片段。从输入到输出文本流通常意味着一些有趣的sed或awk用法。但是我们需要查看一下sqlplus生成的内容和输出内容。对于sed,awk或perl听起来很不错。 – 2009-11-10 01:01:37

回答

0

你就可以摆脱的领先/使用微调功能尾随空格:

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

SELECT TRIM(col) FROM table; 

不知道为什么你让周围的数字字段报价:可能是一些与你的方式做将列连接在一起?

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

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