如何生成Sqlplus到csv文件?

时间:2014-09-24 09:41:32

标签: oracle bash shell csv sqlplus

我正在尝试通过shell脚本从oracle SQLPLUS生成csv文件,我正在多次重复标题,并且行的末尾也会出现空值,

echo "****************************************************************"

echo "Started may at : " $(date +"%r")

sqlplus -s ETLUSER/ETL@//10.135.23.232:1521/ODS<<EOF >/dev/null

SPOOL wfa_may.csv

SELECT MAC_ADDRESS ||','||
CRM_BP_ID    || ',' || 
EVENT_TIMESTAMP  || ',' || 
ACCT_INPUT_OCTETS || ',' || 
ACCT_OUTPUT_OCTETS || ',' || 
ACCT_INPUT_PACKETS || ',' || 
ACCT_OUTPUT_PACKETS || ',' || 
ACCT_SESSION_TIME || ',' || 
NAS_IDENTIFIER || ',' || 
EXTRACTION_DATE || ',' || 
RECORD_DATE || ',' || 
LAST_MODIFIED_DATE || ',' || 
ETL_BATCH_ID || ',' || 
ETL_PROCESS_ID || ',' || 
RECORD_LOAD_TIMESTAMP FROM DBAS.S_WFA_ACCOUNTING_MSG where to_char(EVENT_TIMESTAMP,'MON') = 'MAY';

exit

EOF

echo "Ended may at : " $(date +"%r")

echo  "****************************************************************"
来自NAS_IDENTIFIER的

我无法找到文件中显示的任何值。

任何人都可以帮我解决错误吗?

2 个答案:

答案 0 :(得分:0)

  

我多次重复标题

设置必需linesize应该有效。无论如何,看看这个:

更新:展示我的建议

SET COLSEP ,
SET PAGESIZE 0
SET LINESIZE 1000
SET trimspool ON 

SPOOL "D:\EMP_DATA.csv"

Select *
From Scott.EMP
/

SPOOL OFF

假脱机的csv文件如下所示:

enter image description here

答案 1 :(得分:0)

在脚本中使用set head offset pages 0