SQL*Loader (`sqlldr`) 是 Oracle 高效大量載入工具,支援定界檔案、固定寬度、多表載入、條件過濾、錯誤處理。本系列以實戰範例示範**單一控制檔載入多張表**的完整流程。
SQL> CONNECT eygle/eygle
Connected.
SQL> CREATE TABLE test1 (
2 a1 VARCHAR2(10),
3 a2 VARCHAR2(10),
4 a3 VARCHAR2(10)
5 );
Table created.
內容範例 (CSV 格式,欄位以逗號分隔):
01,KunMing,YunNan
02,ChengDu,SiChuan
03,GuangZhou,GuangDong
04,ShenZhen,GuangDong
控制檔定義資料檔格式、目標表、欄位對應、載入條件。
LOAD DATA
INFILE 'data.txt'
INTO TABLE test1
FIELDS TERMINATED BY ','
(a1, a2, a3)
關鍵子句說明:
C:\> sqlldr eygle/eygle errors=20000 log=data.log control=data.ctl
SQL*Loader: Release 9.2.0.6.0 - Production
...
Commit point reached - logical record count 3
Commit point reached - logical record count 4
參數說明:
SQL> SELECT * FROM test1;
A1 A2 A3
---------- ---------- ----------
01 KunMing YunNan
02 ChengDu SiChuan
03 GuangZhou GuangDong
04 ShenZhen GuangDong
將示範**單一控制檔載入多張表** (`INTO TABLE ... WHEN ...`)、**條件過濾**、**日期/數字格式轉換**、**續行/實體記錄合併**、**直接路徑載入 (DIRECT=TRUE)** 效能優化、錯誤處理與壞檔 (`BADFILE`)、捨棄檔 (`DISCARDFILE`)、記錄檔分析。