2009-08-18

Oracle SQLPlus 匯出資料

以前都沒有用過這麼大型的資料庫,除了SQL語法會有些許差異外。對於它的工具也並不是那麼熟悉,好巧不巧就碰到了些狀況,必須把資料匯出來。當下只能使用SQL Plus 的方式,查了些網站,利用spool 將資料取出。第一次使用時太過大意,並沒有下參數,所以資料格式非常混亂。建議使用這語法截取資料,必須先將格式定義好,才不會造成使用資料上的困擾。

set newpage none --換頁空幾行
set space 0 --欄位間空幾個space
set pagesize 0 --輸出每頁行數,預設為24,為了避免分頁,可設定為0。
set heading off --欄位表頭
set echo off --Show SQL語法在畫面上
set termout off --顯示腳本中的命令的執行結果
set trimout on --刪除標準輸出每行的行尾空格
set trimspool on --刪除行尾空白
set linesize 2500 --每行長度(太小會斷行,太大效能差)


spool test.csv --匯出到 test.csv 檔案裡,目錄與sqlplus 相同。

Select 欄位A||'┴'|| replace(欄位B ,CHR(10),CHR(13))||'┴' from 資料庫.資料表 where 欄位B is not null order by 欄位A;

/*因為欄位B 裡有斷行符號^p,要將他轉換成分行符號^l
/*^p, ^l為word 的代碼,ASCII碼分別為CHR(10),CHR(13)
/*欄位A與欄位B間,用┴作區隔

spool off --結束匯出

沒有留言: