| 方案 | 適用場景 | 優勢 | 局限 |
|---|---|---|---|
| SQL*Loader (sqlldr) | 大批量、高性能、自動化腳本 | 速度最快、功能最全、支援直接路徑載入 | 需編寫控制文件、學習曲線較陡 |
| 其他資料庫遷移工具 | 異構遷移、一次性專案 | 圖形化、字段映射直觀 | 性能較差、大數據量易超時 |
| Enterprise Manager 數據載入 | 少量數據、臨時任務、DBA 偏好 GUI | 無需命令行、向導式操作 | 不適合自動化、大文件效率低 |
model.txt,從 Excel 導出);input.ctl;sqlplus user/pwd@service 測試連通)。LOAD DATA
INFILE 'model.txt'
INTO TABLE target_table
FIELDS TERMINATED BY '\t' -- Tab 分隔
TRAILING NULLCOLS
(
col1 CHAR(20),
col2 DATE "YYYY-MM-DD",
col3 NUMBER(10,2),
col4 CHAR(100)
)
sqlldr userid=user/pwd@service control=input.ctl log=input.log bad=input.bad discard=input.dsc
log:詳細執行日誌;bad:格式錯誤記錄;discard:不符合 WHEN 條件的記錄。DIRECT=TRUE,繞過 SQL 引擎直寫數據塊,速度提升 5-10 倍;sqlldr ... PARALLEL=TRUE;DROP INDEX,載入後 CREATE INDEX,避免索引維護開銷;ROWS=10000 減少提交開銷;ORA-01652:臨時表空間不足 → 擴容 TEMP 表空間;SQL*Loader-500:控制文件語法錯誤 → 檢查字段映射、分隔符、引號;NLS_LANG 與源文件編碼一致(如 ZHS16GBK)。SQL*Loader 是 Oracle 大批量數據導入的「黃金標準」。掌握控制文件編寫、直接路徑、並行載入、索引策略四大核心技術,配合自動化腳本與監控告警,可構建企業級高可靠、高性能的數據攝入管線。