2016-11-10 86 views
0

我試圖使用列格式將我的SQL查詢結果導出爲.csv文件,如下所示。將SQL * Plus格式化爲CSV輸出格式問題

SET head OFF 
SET feedback OFF 
SET pagesize 500 
SET linesize 2000; 
SET colsep , 
set trimspool on 
set trimout on 
set trims on 

column c1 heading POSTING_DATE Format date 
column c2 heading COMPANY_CODE Format a6 
column c3 heading PHYSICAL_ACCOUNT Format a8 
column c4 heading DEBIT_AMOUNT Format 99999.99 
column c5 heading CREDIT_AMOUNT Format 99999.99 

select POSTING_DATE c1, 
    COMPANY_CODE c2, 
    PHYSICAL_ACCOUNT c3, 
    DEBIT_AMOUNT c4, 
    EDIT_AMOUNT c5 
from abc_temp; 

該報告得到完全生成.csv格式,但我現在面臨的問題有兩列:credit_amountdebit_amount

當我在Excel中打開.csv文件並選擇很少的單元格時,它應該顯示所有選定單元格的總數,計數和平均值,這是按照內置的Excel功能。這不適用於這兩列。只有計數顯示

Only count is coming, average and total should also come

好像Excel正在處理這些爲字符串,而不是數字。我該如何解決這個問題?

回答

0

這些值被視爲字符串,因爲默認情況下,SQL * Plus使用製表符來分隔結果,並且製表符的存在使得Excel假定它實際上是一個字符串。如果它只有空格分隔值,那麼該值仍然會被視爲一個數字。

您可以change the behaviour加入:

set tab off 

雖然我個人傾向於構建每一行與串聯,從而消除任何空白,並格式化日期(有時數)明確::

set head off 
set pages 0 

prompt Posting date,Company code,Physical account,Debit amount,Credit amount 

select to_char(posting_date, 'YYYY-MM-DD') 
    ||','|| company_code 
    ||','|| physical_account 
    ||','|| debit_amount 
    ||','|| credit_amount 
from abc_temp; 
+0

非常感謝亞歷克斯,它的工作原理就像是魅力:D,我從來沒有意識到設置標籤會造成如此巨大的差異。 我在這麼多天苦苦掙扎,幾乎每個網站都搜索一遍。但在這裏你像一個英雄般回答:)非常感謝你。 –