DB2 資料移動包含 EXPORT (匯出)、IMPORT (匯入)、LOAD (裝入/載入) 三大指令,支援四種檔案格式。本文詳細說明各格式結構、EXPORT 指令語法與實例、DEL 格式修飾符、ASC 格式轉換技巧。
| 格式 | 全名 | 結構特點 | 適用場景 |
|---|---|---|---|
| ASC | Non-delimited ASCII | 固定寬度欄位,無分隔符,以起始/結束位置定義欄位 | 大型機下載、固定格式交換 |
| DEL | Delimited ASCII | 列分隔符 (預設換行) + 欄位分隔符 (預設逗號) + 字元限定符 (預設雙引號) | 跨平台/異構遷移、人工閱讀 |
| WSF | Worksheet Format | Lotus 1-2-3 / Symphony 專用格式 | 與 Lotus 系列互操作 |
| IXF | Integrated Exchange Format (PC/IXF) | 二進位,含標頭、表定義、欄位描述符、資料記錄,支援完整中繼資料 | 同構 DB2 遷移、備份、重建表 (FORCECREATE) — 最推薦 |
EXPORT TO OF [MODIFIED BY ]
EXPORT TO c:\org.txt OF DEL SELECT * FROM org;
產生逗號分隔、雙引號包裹字串的文字檔。
EXPORT TO c:\staff.txt OF DEL
MODIFIED BY COLDEL$ CHARDEL'' DECPLUSBLANK
SELECT * FROM staff;
COLDEL$:欄位分隔符改為 $。CHARDEL'':字元限定符改為單引號 (雙單引號表示一個單引號)。DECPLUSBLANK:數值型欄位正號改為空白 (預設輸出 +123 → 123)。思路:將各欄位 CAST 為固定長度 CHAR,再 CONCAT 成單一欄位輸出:
CREATE TABLE n (a INT, b DATE, c TIME, d VARCHAR(5), e CHAR(4), f DOUBLE);
INSERT INTO n VALUES (15, '2004-10-21', '23:12:23', 'abc', 'hh', 35.2);
INSERT INTO n VALUES (5, '2004-01-21', '03:12:23', 'bc', 'hhh', 35.672);
-- 匯出固定寬度文字
EXPORT TO c:\test.txt OF DEL
SELECT
RIGHT('00000000' || CHAR(a), 8) || -- 8 位數字右對齊
CHAR(b, ISO) || -- DATE → YYYY-MM-DD (10 字元)
REPLACE(CHAR(c, ISO), ':', '') || -- TIME → HHMMSS (6 字元)
RPAD(d, 5) || -- VARCHAR(5) 右補空白
RPAD(e, 4) || -- CHAR(4)
RIGHT('0000000000000000' || CHAR(CAST(f AS DECIMAL(16,4))), 16) -- 固定 16 字元數值
FROM n;
10,"Head Office",160,"Corporate","New York"
15,"New England",50,"Eastern","Boston"
20,"Mid Atlantic",10,"Eastern","Washington"
...
10 Head Office 160 Corporate New York
15 New England 50 Eastern Boston
20 Mid Atlantic 10 Eastern Washington
...
掌握四種格式特性與 EXPORT 修飾符,能滿足多數資料交換需求。同構 DB2 環境首選 IXF (含結構、索引、約束);異構/跨平台首選 DEL (可調整分隔符);固定寬度需求靠 SQL 組裝輸出 ASC。下篇將介紹 IMPORT/LOAD 參數與效能調優。