2009-11-09 52 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