前言:格式不符,數據拒之門外
DB2 在數據導入前會嚴格校驗外部文件格式,不合規即拒絕入庫。掌握 DB2 支持的三種標準格式——定界 ASCII、固定長度 ASCII、二進制格式(PC/IXF 與 WSF),是 DBA 高效完成遷移、ETL 的前提。
一、定界 ASCII 文件(DEL):最通用、最靈活
幾乎所有資料庫都支援。DB2 透過三類分隔符定義邊界:
- 字符串分隔符: 預設雙引號
",用於標識字符類型數據的起止(Oracle 等無此要求,遷移時需注意)。
- 列分隔符: 預設逗號
,,可自定義為分號、冒號等,必須為英文半角符號。
- 行分隔符: 跨平台遷移的隱形殺手。Windows (CRLF) 與 Linux (LF) 不兼容,直接導入會導致數據擠在一行。跨 OS 遷移前,務必用
dos2unix 等工具轉換換行符。
示例: 1001,"Office",2323,"BeiJing",-233
限制: 單列值不超 32KB;含二進制數據或跨平台場景不推薦使用。
二、固定長度 ASCII 文件(IXF/位置文件):精確但脆弱,正在退出歷史舞台
以固定位移量定義字段邊界,每行長度、每欄起止位置固定,不足處用空格填充。缺點極其明顯:
- 手工製作極易出錯(多/少一個空格即失敗);
- 中英文字符寬度不同,混合數據極難對齊;
- DB2 導出工具已放棄此格式,建議僅在舊系統兼容場景使用,且必須用專業工具生成。
三、二進制格式文件:跨平台、跨產品遷移的首選
解決 ASCII 跨平台不兼容的根本方案,分兩類:
- PC/IXF (Integrated Exchange Format): 同時存儲數據內容與表結構定義,二進制格式天然跨平台,適合 Linux ↔ Windows 間 DB2 表遷移。
- WSF (Worksheet Format): DB2 專有格式,專用於 DB2 與 Lotus 等同生態產品間的數據交換。
選型建議: 同構跨平台遷移首選 PC/IXF;異構生態交換用 WSF;簡單文本交換用 DEL(注意換行符轉換)。