之前因故要匯入幾百萬筆的資料到oracle的DB內,當然是使用我最熟的Toad for Oracle來操作,誰知道資料量太大了,toad當場當給我看;翻了翻中外的技術文件,找到了個好用的方法,穩又方便,實際使用結果相當OK,這個方法就叫做SQL Loader。
SQL Loader簡單來說有點像批次處理,他利用SQL的指令,一筆一筆將資料匯到指定的Table內去。
SQL Loader的操作,主要需要三個類別的檔案:
1. 執行SQL動作的批次檔,用來在DOS或Terminal模式下執行(ex: import.bat);
2.要被匯入rawdata檔案,我通常是用.csv檔案(ex: rawdata.csv);
3.SQL動作批次檔呼叫的細部匯入參數控制檔(ex: import.ctl)。
其中分別針對以上三個檔案做實際範例說明,且已下假設import.bat、import.ctl在同一個目錄下,而rawdata在c:\test下:
1.執行SQL動作的批次檔import.bat內容
sqlldr userid=report/report123@report control=import.ctl log=import.log
2.SQL動作批次檔呼叫的細部匯入參數控制檔 import.ctl (以下於實際ctl檔案內,均如下一行一
行寫)
Load data --控制文件標識
infile 'C:\test\rawdata.csv' --要導入的檔名'e:\aa.csv'
append into table report.trans_jobh_tmp --向Table OLDSSS_TEST導入數據
fields terminated by "," --檔案分隔符(csv為",")
TRAILING NULLCOLS
(RECV_TIME DATE "YYYY/MM/DD HH24:MI:SS",
START_TIME DATE "YYYY/MM/DD HH24:MI:SS",
ORIGINAL_ZONE,REAL_EMPTY,ORIGINAL_PARTITION,OP_SEQ) --檔案對應的欄位名
3.要被匯入rawdata檔案 (主要是要以逗號分隔,細部內容格式需確認是否正確)
2011/1/12 00:07,2011/1/12 00:07,U2,,Empty,,
2011/1/12 00:01,2011/1/12 00:01,103,Real,1,
2011/1/12 00:04,2011/1/12 00:04,103,Real,1,1040
.
.
.
最候,完成以上的檔案後,執行批次檔就可以囉~~
Wednesday, March 6, 2013
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment