首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

DB2 數據移動三板斧:IMPORT、EXPORT、LOAD 完整語法、文件格式與場景選型

     編輯:DB2 教學

三大命令定位

命令方向日誌速度觸發器/約束適用場景
IMPORT文件 → 表全記錄 (可 COMMIT 塊)慢觸發、檢查、RI 全執行小數據、需業務邏輯驗證、初始化參考表
LOAD文件 → 表最小 (可 NOT LOGGED INITIALLY)極快 (可達 50-60 MB/s)不觸發 Trigger、繞過 RI/Check (需事後 SET INTEGRITY)大批量載入、數據倉庫 ETL、離線初始化
EXPORT表 → 文件唯讀,無日誌快不適用備份、遷移、報表輸出、跨平台傳輸

文件格式詳解

1. DEL (分隔符 ASCII) — 最通用、推薦

  • 行分隔符:換行符 (LF/CRLF)。
  • 列分隔符:預設逗號 ,,可用 MODIFIED BY COLDEL; 指定分號等。
  • 字符分隔符:預設雙引號 ",可用 CHARDEL' 指定單引號。
  • 範例:
10,"Head Office",160,"Corporate","New York"
15,"New England",50,"Eastern","Boston"

2. ASC (非分隔符定長 ASCII) — 歷史遺留

  • 每列固定起始/結束位置 (位置制)。
  • 無分隔符,靠位置解析。
  • 跨平台換行符差異極易出錯 (Win CRLF vs Unix LF)。不推薦新專案使用。

3. PC/IXF (二進制) — 跨平台、含元數據

  • PC/IXF (PC Integrated Exchange Format):含表結構定義、數據、索引定義,二進制格式,跨平台無損遷移 (Linux ↔ Windows)。
  • WSF (Worksheet Format):DB2 與 Lotus 1-2-3 互換專用。

核心命令語法範例

EXPORT — 最簡單、最穩健

-- 導出全表到 DEL 文件
EXPORT TO /data/export/emp.del OF DEL
  SELECT * FROM EMPLOYEE;

-- 導出查詢結果,指定分隔符
EXPORT TO /data/export/emp_semi.del OF DEL MODIFIED BY COLDEL;
  SELECT EMPNO, LASTNAME, SALARY FROM EMPLOYEE WHERE SALARY > 50000;

IMPORT — 逐行處理、事務控制

-- 替換模式 (清空表再導入)
IMPORT FROM /data/export/emp.del OF DEL
  REPLACE INTO EMPLOYEE;

-- 插入模式 (追加),提交頻率 1000 行
IMPORT FROM /data/export/emp.del OF DEL
  INSERT INTO EMPLOYEE
  COMMITCOUNT 1000;

-- 創建表並導入 (IXF 含結構)
IMPORT FROM /data/export/emp.ixf OF IXF
  CREATE INTO NEW_EMP;

LOAD — 高性能載入、分階段

-- 1. 載入階段 (不記日誌,極快)
LOAD FROM /data/load/emp.del OF DEL
  REPLACE INTO EMPLOYEE
  NOT LOGGED INITIALLY
  STATISTICS YES WITH DISTRIBUTION AND DETAILED INDEXES ALL;

-- 2. 如用 NOT LOGGED INITIALLY,載入後表處於 "Load Pending",需提交
--    若載入失敗,表進入 "Unavailable",只能 DROP 重建

-- 3. 同步收集統計 (避免後續 RUNSTATS)
--    STATISTICS YES WITH DISTRIBUTION AND DETAILED INDEXES ALL

-- 4. 使用統計配置檔 (DB2 9.7+)
LOAD FROM /data/load/emp.del OF DEL
  REPLACE INTO EMPLOYEE
  STATISTICS USE PROFILE;

LOB 數據導出特殊處理 (重點)

當表含 LOB 列 (BLOB/CLOB/DBCLOB) 且單值 > 32KB:

  • 主導出文件僅存 LOB 定位器 (路徑/文件名)。
  • LOB 實際數據寫入單獨文件,需指定:
EXPORT TO /data/export/emp_lob.del OF DEL
  LOBS TO /lobdata/path1, /lobdata/path2
  LOBFILE lobf1, lobf2
  MODIFIED BY LOBSINFILE
  SELECT * FROM EMP_PHOTO;
  • LOBS TO:多目錄分散存放,避免單目錄文件過多。
  • LOBFILE:文件名前綴,系統自動加 3 位數字後綴 (lobf1001, lobf1002...),每前綴支援 1000 文件。
  • MODIFIED BY LOBSINFILE:啟用外部 LOB 文件模式。
  • 文件名總數 = 目錄數 × 前綴數 × 1000,必須 ≥ LOB 行數 × LOB 列數,否則導出失敗。

場景選型決策樹

需要跨平台遷移含結構數據?
  是 → EXPORT IXF / LOAD IXF (含統計)
  否 → 目標是 DB2?
    是 → 大批量載入? → 是 → LOAD (NOT LOGGED + STATISTICS)
                    否 → IMPORT (需驗證約束/觸發器)
    否 → 目標非 DB2? → EXPORT DEL/CSV → 目標工具導入

結語

DB2 數據移動核心三命令各有定位:EXPORT 導出無憂、IMPORT 邏輯驗證、LOAD 極速載入。掌握 DEL/IXF 格式選擇、LOB 外部文件處理、LOAD 統計同步收集、NOT LOGGED INITIALLY 風險控制,即可構建高效、可靠的跨環境數據傳輸管道。記住:大數據用 LOAD、小數據用 IMPORT、遷移用 IXF、導出用 DEL。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved