2015年4月17日 星期五

[Oracle]如何在SQLPlus格式化輸出成CSV

        SQLPlus預設環境下有很多System Variable,如果沒特別去設定,用SPOOL輸出到文字檔時,可能會看到一些不乾淨資料,像是表頭、回傳筆數及統計時間等等的

        如下圖,配合一些System Variable設定就可以不顯示了


        接著就是要想辦法在欄位之間加入逗號作為分隔符號囉,最簡單快速的方法就是加上COLSEP設定欄位間的分隔符號,下面是個完整的範例

SET PAGESIZE 0
-- Displays the number of records returned by a query when a query selects at least n records.
SET FEEDBACK OFF
SET HEADING OFF
SET TRIMOUT ON
SET TRIMSPOOL ON
SET LINESIZE 100
--SET ECHO OFF -- Print CMD
SET TIMING OFF
-- Sets the text to be printed between selected columns.
SET COLSEP ','

SPOOL /tmp/test.csv

select username, User_Id, Account_Status from Dba_Users where Initial_Rsrc_Consumer_Group='SYS_GROUP';

SPOOL OFF
EXIT

        輸出結果如下圖,但會是固定欄位長度的,這樣基本上已經可以讓EXCEL正常打開了


        當然如果你希望不是這種固定長度的,就自己用字串相連運算子||兜出想要的SQL囉,這就不多做說明


0 意見:

張貼留言