承接上篇「Export 匯出」,本文深入解析 IMPORT 指令的多種檔案格式、插入模式與空值處理技巧,助您高效將外部資料載入 DB2 資料表。
IMPORT 與 EXPORT 結構對應:FROM 對應 TO,檔名與格式意義相同。差異在於 IMPORT 支援 ASC 定長格式,且尾端指定「插入模式 + 目標表」而非 SQL 查詢。
IMPORT FROM C:\ORG.TXT OF DEL INSERT INTO ORG;
IMPORT FROM C:\ORG2.TXT OF ASC
METHOD L(1 5, 6 19, 20 25, 26 37, 38 50)
INSERT INTO ORG;
METHOD L 指定各欄位「起始位置 結束位置」,欄位間以逗號分隔。
先匯出帶欄位名稱的 IXF:
EXPORT TO D:\ORG.IXF OF IXF METHOD N(A,B,C,D,E) SELECT * FROM ORG;
再匯入時重新排序、甚至建立新表:
IMPORT FROM D:\ORG.IXF OF IXF METHOD N(D,E,B)
REPLACE_CREATE INTO ORGTEST;
REPLACE_CREATE:表存在則清空重灌,不存在則依檔案欄位自動建表(僅限 IXF)。
IMPORT FROM D:\ORG.IXF OF IXF METHOD P(4,5,2) REPLACE INTO ORGTEST;
METHOD P 直接指定來源檔第 4、5、2 欄,無須欄位名稱。
| 模式 | 適用情境 | 備註 |
|---|---|---|
| INSERT | 純新增,保留既有資料 | 預設模式 |
| INSERT_UPDATE | 有主鍵的表,主鍵衝突則更新 | 需表有主鍵 |
| REPLACE | 全量重灌,先刪除所有資料 | 速度較快,但會觸發 Delete Trigger |
| REPLACE_CREATE | 表不存在時自動建表再灌資料 | 僅支援 IXF 格式 |
ASC 檔案無法直接表達 NULL,DB2 會把空白當成空字串。解法:使用 NULL INDICATORS + MODIFIED BY NULLINDCHAR。
IMPORT FROM C:\ORG2.TXT OF ASC
MODIFIED BY NULLINDCHAR=#
METHOD L(1 5, 6 19, 20 25, 26 37, 38 50)
NULL INDICATORS(0,0,0,0,38)
REPLACE INTO ORG;
NULL INDICATORS(0,0,0,0,38):前四欄無 NULL,第 5 欄從第 38 字元開始判斷。NULLINDCHAR=#:若第 5 欄第 38 字元為 #,視為 NULL。下篇將介紹 LOAD 指令:高速大量載入、掛起狀態處理、與 IMPORT 的效能差異分析。