2016-11-10 194 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,我从来没有意识到设置标签会造成如此巨大的差异。 我在这么多天苦苦挣扎,几乎每个网站都搜索一遍。但在这里你像一个英雄般回答:)非常感谢你。 –