上線前大量資料匯入是常態作業。IMPORT 指令透過 INSERT 逐筆寫入,靈活但效能較 LOAD 低。掌握四大關鍵點,可大幅降低失敗風險與效能衝擊。
NOT NULL 限制 → 匯入失敗 (拋錯)USEDDEFAULTS 選項IMPORT FROM data.ixf OF IXF USEDDEFAULTS INSERT INTO target_table
NOT NULL + DEFAULT 欄位務必加 USEDDEFAULTS| 工具 | 機制 | 效能 | 適用 |
|---|---|---|---|
| IMPORT | SQL INSERT 逐筆、記錄日誌、觸發觸發器/約束 | 較慢 | 小量、需觸發邏輯、線上業務並行 |
| LOAD | 繞過 SQL 層直接寫頁面、最小日誌、不觸發觸發器 | **極快** | 大量初始載入、維護窗口、可接受表鎖定 |
COMPOUND=NIMPORT FROM data.del OF DEL MODIFIED BY COMPOUND=100 INSERT INTO target_table
COMMITCOUNT N大量 INSERT 佔用作用日誌空間 → 日誌滿 → 匯入失敗、回滾耗時。
IMPORT ... COMMITCOUNT 500 INSERT INTO target_table
RESTARTCOUNT 斷點續傳:# 失敗後,從第 10001 筆繼續 (前 10000 已提交)
IMPORT ... RESTARTCOUNT 10000 COMMITCOUNT 500 INSERT INTO target_table
| 需求 | 修飾符 | 範例 |
|---|---|---|
| 欄位分隔非逗號 (如冒號、Tab) | COLDELx | |
| 字串分隔符非雙引號 | CHARDELx | |
| 日期/時間格式自訂 | DATESISO / TIMESISO 等 | |
| 一筆資料跨多行 (避免被誤判多筆) | DELPRIORITYCHAR |
IMPORT FROM data.txt OF DEL
MODIFIED BY COLDEL: CHARDEL' DELPRIORITYCHAR
INSERT INTO target_table
NOT NULL + DEFAULT 欄位是否加 USEDDEFAULTS?LOAD 或加 COMPOUND?COMMITCOUNT + 準備 RESTARTCOUNT 續傳腳本?MODIFIED BY?RUNSTATS?