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

輕鬆掌握 DB2 資料移動三大核心:Import、Export、Load 完整實戰指南

     編輯:DB2 教學

核心概念

操作方向用途特點
Import(導入)檔案 → 表資料載入、跨平台遷移支援多種格式、記錄日誌、可恢復、速度較慢
Export(導出)表 → 檔案備份、遷移、報表、歸檔最簡單、幾乎不出錯、支援多格式、不阻塞讀取
Load(裝入)檔案 → 表大量資料高速載入、初始化資料倉庫不記錄日誌(可選)、直接寫頁、速度最快、需後續備份才能前滾恢復

資料移動的戰略價值

異構資料庫間遷移(Oracle ↔ DB2 ↔ SQL Server ↔ MySQL 等)的通用橋樑。所有主流資料庫均支援 CSV/DEL/IXF 等標準格式,使「導出 → 轉換 → 導入」成為最通用、風險最低的遷移模式。

四大支援檔案格式深度解析

1. ASC(非定界 ASCII)

固定寬度欄位,無分隔符,靠起始/結束位置定義欄界。適合大型機下載、列印報表轉檔。

10 Head Office      160 Corporate      New York
15 New England       50 Eastern       Boston
20 Mid Atlantic      10 Eastern       Washington

2. DEL(定界 ASCII)

最通用格式。列以換行分隔,欄以分隔符(預設逗號)分隔,字串以引號(預設雙引號)包裹。支援 MODIFIED BY 自訂分隔符/引號/十進制符號。

10,"Head Office",160,"Corporate","New York"
15,"New England",50,"Eastern","Boston"
20,"Mid Atlantic",10,"Eastern","Washington"

3. WSF(Work Sheet Format)

Lotus 1-2-3 / Symphony 專用格式,現較少用,主要用於與舊版 Lotus 產品交換資料。

4. IXF(Integration Exchange Format,PC/IXF)

DB2 專屬二進位交換格式。包含表結構、索引、授權、資料,可 REPLACE_CREATE 直接重建表。跨 DB2 版本/平台遷移首選,資料完整性最強。

Export 實戰範例精選

基本導出(DEL 格式)

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:十進制正數前綴改為空白而非 +

大物件(LOB)導出

EXPORT TO d:\myfile.del OF DEL
  LOBS TO d:\lob\ LOBFILE lobs
  MODIFIED BY lobsinfile
  SELECT * FROM emp_photo
  • LOB 資料另存為 d:\lob\lobs.001、lobs.002… 系列檔案
  • 主檔僅存放檔案指標(如 lobs.001.0.43690/)
  • 目錄 d:\lob 必須預先存在

導出訊息記錄與欄位重命名

EXPORT TO d:\awards.ixf OF IXF
  MESSAGES d:\msgs.txt
  METHOD N(c1,c2,c3,c4,c5,c6,c7)
  SELECT * FROM staff WHERE dept = 20
  • MESSAGES:記錄成功/警告/錯誤細節,事後稽核必備
  • METHOD N:僅 IXF/WSF 支援,重新命名欄位

Import 實戰關鍵技巧

基本導入

IMPORT FROM c:\org.txt OF DEL INSERT INTO org

ASC 固定寬度導入(Import 專屬支援)

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 欄位選取與重排(METHOD N/P)

# 先導出帶欄名的 IXF
EXPORT TO d:\org.ixf OF IXF METHOD N(a,b,c,d,e) SELECT * FROM org

# 再導入時選取 d,e,b 三欄,順序重排,若表不存在則自動建立
IMPORT FROM d:\org.ixf OF IXF METHOD N(d,e,b) REPLACE_CREATE INTO orgtest

四種插入模式差異

模式行為適用場景
INSERT追加到現有資料增量載入、日誌可恢復
INSERT_UPDATEPK 衝突則更新,否則插入合併同步、需主鍵
REPLACE先清空表再載入全量重刷、表已存在
REPLACE_CREATE表不存在則依 IXF 結構建表再載入跨環境遷移、僅限 IXF

ASC 空值處理(NULL INDICATORS)

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

第 5 欄從第 38 字元起若為 # 視為 NULL。

Load 進階特性與效能優勢

四階段架構

  1. Load 階段:資料分頁寫入、索引鍵收集排序、可設定一致性點(Checkpoint)支援斷點續傳。
  2. Build 階段:依收集的鍵值建立索引,失敗可從此階段重啟。
  3. Delete 階段:違反唯一/PK 約束的列移至例外表,訊息寫入訊息檔。
  4. Index Copy 階段:若使用系統臨時表空間且啟用 READ ACCESS,將索引從臨時空間複製回目標表空間。

Load 獨有進階功能

  • 游標來源:LOAD FROM mycurs OF CURSOR INSERT INTO target 直接跨表/跨資料庫高速搬移,無中間檔案。
  • 例外表:FOR EXCEPTION exc_table 收集違約列,結構同目標表 + TIMESTAMP + CLOB(32K) 記錄違約詳情。
  • Dump 檔:MODIFIED BY DUMPFILE=d:\dump 收集格式錯誤列(如字串寫入數值欄)。
  • ROWCOUNT / WARNINGCOUNT:限制載入列數、警告數超過即失敗並進入 Load Pending 狀態。
  • RESTART / TERMINATE:從失敗點續傳或終止並釋放表鎖定。
  • NOROWWARNINGS:抑制列級警告,大幅提升大量載入效能。
  • STATISTICS:載入同步收集統計(WITH DISTRIBUTION AND DETAILED INDEXES ALL),僅相容 REPLACE 模式。
  • SET INTEGRITY ... IMMEDIATE UNCHECKED:解除檢查待定狀態(違反 CHECK 約束導致)。

效能關鍵參數

參數效果建議
NONRECOVERABLE不記錄日誌,載入最快,但不可前滾恢復初始載入、可重建資料時使用
COPY YES/NO歸檔日誌模式下控制備份掛起狀態COPY YES 避免表空間 Backup Pending
FASTPARSE減少資料檢查(DEL/ASC),已知資料乾淨時開啟可提升 20-30% 速度
ANYORDERSMP 環境下允許無序載入,配合 CPU_PARALLELISM > 1多核並行載入加速
DATA BUFFER指定 4KB 頁面緩衝區數量視記憶體調大至 1000+ 頁

選型決策樹

  1. 跨異構資料庫遷移 → Export (IXF/DEL) → Import/Load
  2. DB2 間全量遷移、需保留 DDL/索引/授權 → Export IXF → Load REPLACE_CREATE
  3. 日常增量同步、需日誌恢復 → Import INSERT/INSERT_UPDATE
  4. 資料倉庫初始化、TB 級大表、可重建 → Load NONRECOVERABLE + FASTPARSE + ANYORDER
  5. 需同步收集統計、避免額外 RUNSTATS → Load STATISTICS YES ...
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved