SQL*Loader原理
SQL*Loader是Oracle提供的用於資料載入的一種工具,它比較適合業務分析類型資料庫(資料倉儲 ),能處理多種格式的一般檔案,批量資料裝載比傳統的資料插入效率更高。其示意圖如下:
控制檔案(Control File) (.ctl):用於控制資料匯入的行為方式的檔案(最重要的檔案)
參數檔案(可選)(Parameter File) (.par):可以把參數直接寫在控制檔案裡,也可以單獨寫一個 參數檔案
資料檔案(Data Files) :放置來源資料的一般檔案(可以一次性匯入多個資料檔案)
壞檔案(Bad File) (.bad):在資料載入時,把無法正確載入的資料放入錯誤檔案中(比如資料格式 、資料類型問題等)
丟棄檔案(可選)(Discard File) (.dsc):有些資料,雖然資料格式、資料類型沒有問題,但它被 邏輯條件過濾掉了(由控制檔案WHEN設定),會被放入丟失檔案
記錄檔(Log File) (.log):記錄SQL*Loader的資料載入過程
SQL*Loader的資料載入方式
SQL*Loader支援3種資料載入方式,分別是:
傳統路徑載入(direct=false):等同於insert語句
直接路徑載入(direct=true):繞過SGA,把資料直接匯入高水位線(HWM)以上,可設定並行載入,性 能比傳統路徑載入更高,但限制也更多
外部表格載入(較少用):先為資料檔案上建立一個外部表格,然後再把資料從外部表格insert到目標表中
資料檔案的記錄格式
從SQL*Loader的角度來看,資料檔案裡的資料是以記錄組織的,分為以下三種記錄格式(由控制文 件的INFILE參數設定):
定長記錄格式
這種方式靈活性最差,但效能卻最好,它的文法如下:
INFILE datafile_name "fix n"
表示資料檔案裡的每個記錄定長為n個位元組。
變長記錄格式
INFILE "datafile_name" "var n"
變長記錄分為兩個部分:記錄長度和記錄本身,看下面這個例子: