概述
DB2 `IMPORT`/`LOAD`/`EXPORT` 支援三大類外部文件格式。選擇正確格式能避免導入失敗、編碼亂碼、跨平台不兼容等問題。
一、定界 ASCII (Delimited ASCII, DEL)
最通用、跨平台兼容性最好,幾乎所有資料庫/工具皆支援。
分隔符規則
- 字符分隔符:預設雙引號 (`"`) 包裹字符型數據(含分隔符時必須)。
- 列分隔符:預設逗號 (`,`),可自定義(分號、冒號等),**必須為英文半角字符**。
- 行分隔符:Windows (`\r\n`) vs Linux/Unix (`\n`),**跨平台導入前務必轉換**(`dos2unix` / `unix2dos`)。
示例
1001,"office",2323,"BeiJing",-233
1002,"Bei,Jing",5000,"Shanghai",0
限制
- 單列值長度 ≤ 32KB。
- **不適合二進制數據**(BLOB/CLOB 等)。
- 跨平台時行結束符不一致易導致「全文變一行」錯誤。
二、固定長度 ASCII (Positional ASCII)
又稱位置文件,無分隔符,每列固定寬度,不足補空格。
特點
- 第 N 行起始位置 = `固定行長 × (N-1)`。
- 每列起止位置固定,中文佔 2 字節、英文佔 1 字節,**混合中英極難手工製作**,極易出錯。
- DB2 導出工具已**不再支援導出此格式**,屬淘汰制式。
建議
**不建議使用**。若必須用,請用專業 ETL 工具生成,勿手工編輯。
三、二進制格式
解決跨平台、跨產品兼容性問題,存儲「數據+表結構定義」。
1. PC/IXF (PC Integrated Exchange Format)
- 用於**不同作業系統平台間**(Linux ↔ Windows ↔ AIX)的 DB2 表遷移。
- 二進制存儲,無行結束符差異,攜帶完整 DDL(列名、類型、長度、Nullability)。
- 命令:
EXPORT TO file.ixf OF IXF SELECT ... / IMPORT FROM file.ixf OF IXF INSERT INTO ...
2. WSF (Worksheet Format)
- DB2 專有格式,用於 **DB2 與 Lotus 產品(1-2-3、SmartSuite)互導**。
- 同為二進制,但用途不同,**不可混淆使用**。
選擇指南
| 場景 | 推薦格式 | 理由 |
| 同平台、文本工具處理、人工檢查 | DEL (定界 ASCII) | 可讀、通用、易調試 |
| 跨平台遷移(Linux→Windows) | IXF (PC/IXF) | 二進制無編碼/行結束符問題,自帶 DDL |
| 含 BLOB/CLOB 二進制大對象 | IXF | DEL 不支援二進制列 |
| 與 Lotus 互導 | WSF | 專用格式 |
總結
**90% 場景用 DEL 即可**,只需注意字符分隔符、列分隔符、行結束符跨平台轉換。**跨平台遷移或含二進制列時必選 IXF**。固定長度 ASCII 已淘汰,勿用。WSF 僅限 Lotus 互導場景。