建立 Oracle 外部表讀取 CSV 或文字檔時,檔案第一行通常為欄位標題,不應匯入資料。Oracle 外部表在 ACCESS PARAMETERS 中提供 SKIP n 選項,可直接跳過前 n 行,無需前置處理腳本。
CREATE TABLE dept_external (
deptno NUMBER(6),
dname VARCHAR2(20),
loc VARCHAR2(25)
)
ORGANIZATION EXTERNAL (
TYPE oracle_loader
DEFAULT DIRECTORY admin
ACCESS PARAMETERS (
RECORDS DELIMITED BY newline
BADFILE 'ulcase1.bad'
DISCARDFILE 'ulcase1.dis'
LOGFILE 'ulcase1.log'
SKIP 20 -- 忽略前 20 行,標題列通常設為 SKIP 1
FIELDS TERMINATED BY ","
OPTIONALLY ENCLOSED BY '"'
(
deptno INTEGER EXTERNAL(6),
dname CHAR(20),
loc CHAR(25)
)
)
LOCATION ('ulcase1.ctl')
)
REJECT LIMIT UNLIMITED;
SKIP 20 表示忽略前 20 行;實務上若只要跳過標題列,請改為 SKIP 1。SKIP 僅影響資料讀取,不影響 BADFILE/DISCARDFILE/LOGFILE 的記錄行號。FIELDS TERMINATED BY、OPTIONALLY ENCLOSED BY 可處理標準 CSV 格式(含雙引號包裹、逗號分隔)。INSERT INTO target SELECT * FROM ext_table 載入正式表。