亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請問如何使用SQLPLUS對CSV格式化文件進行后臺處理?

請問如何使用SQLPLUS對CSV格式化文件進行后臺處理?

白衣染霜花 2019-08-02 07:02:35
如何使用SQLPLUS對CSV格式化文件進行后臺處理?我想將一些查詢提取為CSV輸出格式。不幸的是,我不能使用任何花哨的SQL客戶端或任何語言來完成它。我必須使用SQLPLUS。我該怎么做?
查看完整描述

3 回答

?
守候你守候我

TA貢獻1802條經驗 獲得超10個贊

您也可以使用以下內容,盡管它確實在字段之間引入了空格。


set colsep ,     -- separate columns with a comma

set pagesize 0   -- No header rows

set trimspool on -- remove trailing blanks

set headsep off  -- this may or may not be useful...depends on your headings.

set linesize X   -- X should be the sum of the column widths

set numw X       -- X should be the length you want for numbers (avoid scientific notation on IDs)


spool myfile.csv


select table_name, tablespace_name 

  from all_tables

 where owner = 'SYS'

   and tablespace_name is not null;

產出如下:


    TABLE_PRIVILEGE_MAP           ,SYSTEM                        

    SYSTEM_PRIVILEGE_MAP          ,SYSTEM                        

    STMT_AUDIT_OPTION_MAP         ,SYSTEM                        

    DUAL                          ,SYSTEM 

...

這將比鍵入所有字段并將它們與逗號連接起來要簡單得多。如果需要,可以使用一個簡單的sed腳本來刪除逗號前面的空格。


像這樣的東西可能有用.(我的sed技能很生疏,所以這可能需要工作)


sed 's/\s+,/,/' myfile.csv 




查看完整回答
反對 回復 2019-08-03
?
萬千封印

TA貢獻1891條經驗 獲得超3個贊

我將此命令用于提取維度表(DW)數據的腳本。因此,我使用以下語法:


set colsep '|'

set echo off

set feedback off

set linesize 1000

set pagesize 0

set sqlprompt ''

set trimspool on

set headsep off


spool output.dat


select '|', <table>.*, '|'

  from <table>

where <conditions>


spool off

而且起作用了。我不使用sed格式化輸出文件。




查看完整回答
反對 回復 2019-08-03
?
慕桂英3389331

TA貢獻2036條經驗 獲得超8個贊

我看到了一個類似的問題.。

我需要從SQLPLUS對CSV文件進行后臺處理,但是輸出有250列。

為了避免煩人的SQLPLUS輸出格式,我做了什么:

set linesize 9999set pagesize 50000spool myfile.csvselect xfrom(select col1||';'||col2||';'||col3||';'||col4||';'||col5||';'||col6||';'||col7||';'||col8||';'||col9||';'||col10||';'||col11||';'||col12||';'||col13||';'||col14||';'||col15||';'||col16||';'||col17||';'||col18||';'||col19||';'||col20||';'||col21||';'||col22||';'||col23||';'||col24||';'||col25||';'||col26||';'||col27||';'||col28||';'||col29||';'||col30 as xfrom (  
      ...  here is the "core" select
     ));spool off

問題是你會失去列頭名.。

您可以添加以下內容:

set heading offspool myfile.csvselect col1_name||';'||col2_name||';'||col3_name||';'||col4_name||';'||col5_name||';'||col6_name||';'||col7_name||';'||col8_name||';'||col9_name||';'||col10_name||';'||col11_name||';'||col12_name||';'||col13_name||';'||col14_name||';'||col15_name||';'||col16_name||';'||col17_name||';'||col18_name||';'||col19_name||';'||col20_name||';'||col21_name||';'||col22_name||';'||col23_name||';'||col24_name||';'||col25_name||';'||col26_name||';'||col27_name||';'||col28_name||';'||col29_name||';'||col30_name from dual;select xfrom(select col1||';'||col2||';'||col3||';'||col4||';'||col5||';'||col6||';'||col7||';'||col8||';'||col9||';'||col10||';'||col11||';'||col12||';'||col13||';'||col14||';'||col15||';'||col16||';'||col17||';'||col18||';'||col19||';'||col20||';'||col21||';'||col22||';'||col23||';'||col24||';'||col25||';'||col26||';'||col27||';'||col28||';'||col29||';'||col30 as xfrom (  
      ...  here is the "core" select
     ));spool off

我知道這有點硬,但對我來說很管用.



查看完整回答
反對 回復 2019-08-03
  • 3 回答
  • 0 關注
  • 509 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號