【问题标题】:How to Generate Sqlplus to csv file?如何生成 Sqlplus 到 csv 文件?
【发布时间】:2016-05-11 15:22:47
【问题描述】:
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 我无法找到文件中显示的任何值。

谁能帮我看看怎么回事?

【问题讨论】:

  • 其他列中是否有可能包含逗号的字符串?他们不太可能从名称中获取信息,但这可能会导致 CSV 失效。 (有点好奇为什么要假脱机而不是仅仅将输出重定向到文件,而不是 /dev/null;但这并不真正相关。而且您知道您可以将您的选择拆分到脚本中的多行以使其更具可读性对吧?)
  • 标题重复出现换行?? set termout off set feedback off set head on set verify off set echo off set linesize 30000 set pagesize 0 set trimspool on 这些会有帮助吗??
  • set pagesize 0 will suppress all headers,不只是重复的;你可以设置一个大数字,只看到一次。或create your own。您可能需要设置 linesize - 编辑后我不确定您看到的是什么,例如如果数据被换行到多行,或者被截断。显示一些当前输出和表格中的相应值可能会澄清。
  • 您可以通过演示和示例查看我的更新答案。

标签: oracle bash shell csv sqlplus


【解决方案1】:

在脚本中使用set head offset pages 0

【讨论】:

    【解决方案2】:

    我的标题重复了多次

    需要设置linesize 应该可以工作。无论如何,看看这个:

    更新:展示我的建议

    SET COLSEP ,
    SET PAGESIZE 0
    SET LINESIZE 1000
    SET trimspool ON 
    
    SPOOL "D:\EMP_DATA.csv"
    
    Select *
    From Scott.EMP
    /
    
    SPOOL OFF
    

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

    【讨论】:

    • 您的意思是设置所需的页面大小,而不是行大小?这不会影响标题重复 - 只是如果它们跨行分开? colsep 没有做任何事情,因为它全部连接到一列中。如果您只是使用它,并保留单个列,那么它们仍然会被填充到相同的宽度,这看起来很奇怪 - 我认为如果在 Excel 中打开文件会保留填充,这可能并不理想。跨度>
    • 好的,但我的观点仍然存在——当 Excel 打开文件时,字符串值(但不是日期和数字)仍然被填充,所以它有 SMITH 而不仅仅是 SMITH。这可能或可能不重要。出于这个原因,我个人更喜欢串联,但 YMMV。
    • @William,不客气。那么,我的回答对你有帮助吗?正如我看到的那样,您投票给其他帖子作为答案。我现在很好奇你知道的。请反馈。
    猜你喜欢
    • 1970-01-01
    • 2010-10-13
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多