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