| 命令 | 方向 | 性能 | 日誌 | 觸發器/約束 | 典型場景 |
|---|---|---|---|---|---|
| IMPORT | 文件 → 表 | 中 (SQL 插入) | 記錄 | 觸發 | 小/中量、需業務邏輯驗證、異構遷移 |
| EXPORT | 表 → 文件 | 高 | 不記錄 | 不適用 | 備份、異構導出、報表數據準備 |
| LOAD | 文件 → 表 | 極高 (頁級直寫) | 可選 (NONRECOVERABLE/COPY YES) | 不觸發 (約束延後檢查) | 大批量初始化、數據倉庫裝載、TB 級數據 |
每行由行定界符分隔,列由 起始/結束字節位置 固定。需配合 MODIFIED BY 指定位置映射。
# 示例數據 (無分隔符,純位置)
10 head Office 160 corporate new york
15 new england 50 eastern boston
20 mid atlantic 10 eastern washington
# 列定義:1-3=id, 4-15=name, 16-19=code, 20-30=type, 31-50=city
行由換行符分隔,列由列定界符分隔 (默認逗號),字符串可用字符定界符包裹 (默認雙引號)。
# 標準 CSV 風格
10,"head Office",160,"corporate","new york"
15,"new england",50,"eastern","boston"
20,"mid atlantic",10,"eastern","washington"
# 修改定界符示例
MODIFIED BY COLDEL; CHARDEL" DELPRIORITYCHAR
# 列分號、字符雙引號、定界符優先級字符模式
| 選項 | 含義 | 默認值 |
|---|---|---|
| COLDEL<char> | 列定界符 | , (逗號) |
| CHARDEL<char> | 字符定界符 | " (雙引號) |
| DEL_PRIORITY_CHAR | 字符定界符優先於列定界符解析 | 否 |
| USEDEFAULTS | 缺失列使用默認值 | 否 |
| NOROWWARNINGS | 抑制行警告 | 否 |
| CODEPAGE=1208 | UTF-8 編碼 | 系統編碼 |
# 導出全表到 DEL 文件
db2 "EXPORT TO /data/emp.del OF DEL MODIFIED BY CHARDEL\" SELECT * FROM EMPLOYEE"
# 導出查詢結果 (帶 WHERE)
db2 "EXPORT TO /data/emp_act.del OF DEL SELECT * FROM EMPLOYEE WHERE DEPT='IT'"
# 1. INSERT 模式 (默認) - 違反主鍵報錯繼續
db2 "IMPORT FROM /data/emp.del OF DEL MODIFIED BY CHARDEL\" INSERT INTO EMPLOYEE"
# 2. INSERT_UPDATE - 主鍵存在更新,不存在插入
db2 "IMPORT FROM /data/emp.del OF DEL MODIFIED BY CHARDEL\" INSERT_UPDATE INTO EMPLOYEE"
# 3. REPLACE - 截斷表後裝載 (需獨佔)
db2 "IMPORT FROM /data/emp.del OF DEL MODIFIED BY CHARDEL\" REPLACE INTO EMPLOYEE"
# 4. CREATE 模式 - 自動建表 (僅限 PC/IXF 格式)
db2 "IMPORT FROM /data/emp.ixf OF IXF CREATE INTO NEW_EMP"
# 1. 基礎裝載 (不可恢復,速度最快)
db2 "LOAD FROM /data/emp.del OF DEL MODIFIED BY CHARDEL\" REPLACE INTO EMPLOYEE NONRECOVERABLE"
# 2. 可恢復裝載 (需備份鏡像,支持前滾)
db2 "LOAD FROM /data/emp.del OF DEL MODIFIED BY CHARDEL\" REPLACE INTO EMPLOYEE COPY YES USE TSM"
# 3. 追加模式 (保留現有數據)
db2 "LOAD FROM /data/emp.del OF DEL MODIFIED BY CHARDEL\" INSERT INTO EMPLOYEE"
# 4. 統計同步 (裝載後自動 RUNSTATS)
db2 "LOAD FROM /data/emp.del OF DEL MODIFIED BY CHARDEL\" REPLACE INTO EMPLOYEE STATISTICS YES"
INDEXING MODE INCREMENTAL/DEFERRED)COPY YES 將索引頁寫入備份鏡像狀態查詢: db2 "LOAD QUERY TABLE EMPLOYEE" 顯示當前階段、已處理行數、錯誤計數。
# 源庫 (Oracle/SQL Server/MySQL) → 中間文件 (DEL/IXF) → 目標庫 (DB2)
# 1. 源庫導出標準 CSV (UTF-8, 帶表頭可選)
# 2. DB2 端預建表結構 (db2look -e -t TABLE -o ddl.sql)
# 3. 大表用 LOAD NONRECOVERABLE + 事後全備
# 4. 小表用 IMPORT INSERT_UPDATE 支持增量同步
# 5. 全量對比:db2 "SELECT COUNT(*) FROM TABLE" vs 源庫行數
| 錯誤現象 | 原因 | 解決 |
|---|---|---|
| SQL3110N 行數不匹配 | 文件列數與目標表不一致 | 檢查 MODIFIED BY 定界符、隱藏列 (XML/生成列) 是否需 METHOD P(1,2,3) 指定 |
| SQL3519N 代碼頁轉換失敗 | 文件編碼與 DB2 CODEPAGE 不符 | 指定 CODEPAGE=1208 (UTF-8) 或轉碼工具預處理 |
| LOAD 後表處於 SET INTEGRITY PENDING | 約束延後檢查 | SET INTEGRITY FOR TABLE IMMEDIATE CHECKED 執行檢查 |
| NONRECOVERABLE 導致表不可用 | 未做事後備份 | 裝載緊接 BACKUP DB ... TABLESPACE ... |
DB2 數據移動「輕量用 EXPORT/IMPORT,重量用 LOAD」。掌握 DEL/ASC 格式規範、MODIFIED BY 參數組合、LOAD 多階段特性,即可應對從 KB 到 PB 級的各類數據遷移、裝載、歸檔場景。建議建立參數化腳本庫,納入自動化部署流水線。