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

DB2 EXPORT 實用程式完整指南:從基礎操作到大型物件與 XML 資料匯出

     編輯:DB2 教學

EXPORT 實用程式概述

DB2 的 EXPORT 實用程式可透過 SQL SELECT 或 XQuery 陳述式,將資料庫表格的資料擷取並寫入外部檔案。支援的輸出格式包括 DEL(分隔檔)、IXF(交換格式)與 WSF(工作表格式)。建議在執行匯出時加入 MESSAGES 子句,將執行過程中的錯誤、警告與資訊性訊息記錄至指定檔案,方便事後排查。

權限需求

成功呼叫 EXPORT 實用程式需具備下列任一權限:

  • SYSADM 或 DBADM 權限
  • 對 SELECT 陳述式中所存取的表格或視圖擁有 CONTROL 或 SELECT 特權

標籤式存取控制 (LBAC) 考量

自 DB2 9.1 引入 LBAC 後,匯出受保護資料列時需注意:

  • 若 LBAC 憑證不允許讀取某資料列,該列不會被匯出,且不會產生錯誤或警告。
  • 若 LBAC 憑證不允許讀取匯出指令中包含的受保護資料行,匯出將失敗並回傳錯誤。

基本匯出範例

下列指令將聯結查詢結果匯出為 DEL 格式檔案,並將訊息記錄至 msg.out:

EXPORT TO myfile.del OF DEL
MESSAGES msg.out
SELECT staff.name, staff.dept, org.location
FROM org, staff
WHERE org.deptnumb = staff.dept;

檔案類型修飾符

預設情況下,DEL 格式以逗號分隔欄位、雙引號括住字串。若資料本身包含逗號或引號,會導致匯入/載入時無法正確解析。此時可使用 MODIFIED BY 子句指定檔案類型修飾符:

EXPORT TO file_name OF file_type
MODIFIED BY file_type_modifiers
MESSAGES message_file
select_statement

常用修飾符:

修飾符說明
chardelx指定單一字元字串分隔符(預設:雙引號 ")
coldelx指定單一字元欄位分隔符(預設:逗號 ,)
codepage=x指定輸出資料的碼頁(ASCII 字串),匯出時將字元資料從應用程式碼頁轉換
timestampformat="x"指定來源表格中時間戳記的格式

範例: 以感嘆號作為字串分隔符、@ 作為欄位分隔符、碼頁 1208、時間戳格式 yyyy.mm.dd hh:mm tt 匯出 SCHEDULE 表:

EXPORT TO myfile.del OF DEL
MODIFIED BY chardel! coldel@ codepage=1208 timestampformat="yyyy.mm.dd hh:mm tt"
MESSAGES msg.out
SELECT * FROM schedule

使用 LOBSINFILE 修飾符匯出大型物件 (LOB)

預設僅匯出 LOB 資料前 32 KB,且與其他欄位資料混在同一檔案。為完整匯出並分離儲存,需使用 LOB 選項。DB2 V9.1 起可選擇將多個 LOB 值寫入同一輸出檔(LOBSINFILE)或各自獨立檔案(LOBSINSEPFILES)。

LOBSINFILE 寫入同一檔案

EXPORT TO file_name OF file_type
LOBS TO lobfile_directory_1, lobfile_directory_2, ...
LOBFILE lobfilename
MODIFIED BY LOBSINFILE
MESSAGES message_file
select_statement
  • LOBS TO:指定 LOB 檔案儲存目錄(可多個),若省略則用目前工作目錄。
  • LOBFILE:指定 LOB 檔案基底名稱,實際檔名會附加序號(如 lobfile.001、lobfile.002)。
  • 指定 LOBS TO 或 LOBFILE 時會隱性啟用 LOBSINFILE 行為,建議仍顯式宣告以避免與 LOBSINSEPFILES 混淆。

LOB Location Specifier (LLS)

使用 LOBSINFILE 時,匯出檔中會產生 LLS 字串指向 LOB 實際位置,格式:filename.ext.lob.nnn.mmm/

  • filename.ext.lob:LOB 檔案名(ext 為序號)
  • nnn:LOB 在檔案中的位元組偏移量
  • mmm:LOB 長度(位元組)

例如 resume.001.lob.1257.2415/ 表示 LOB 位於 resume.001.lob,從第 1257 位元組開始,長度 2,415 位元組。

範例:匯出員工履歷表

EXPORT TO empresume.del OF DEL
LOBS TO d:\lob1\
LOBFILE resume
MODIFIED BY LOBSINFILE
MESSAGES msg.out
SELECT * FROM emp_resume


圖 1:LOB 匯出結果示意

使用 LOBSINSEPFILES 修飾符匯出大型物件

若需將每個 LOB 值存成獨立檔案,改用 LOBSINSEPFILES 修飾符,其餘 LOB 選項相同:

EXPORT TO empresume.del OF DEL
LOBS TO d:\lob1\
LOBFILE resume
MODIFIED BY LOBSINSEPFILES
MESSAGES msg.out
SELECT * FROM emp_resume

執行後會在 d:\lob1 產生 resume.001.lob、resume.002.lob… 各自包含單一 LOB 值。

匯出 XML 資料

DB2 9.1 引入原生 XML 支援,EXPORT 也相應擴充。若不指定 XML 相關選項,XML 資料會寫入與關聯資料分離的檔案。以含 XML 欄位的 PRODUCT 表為例:

EXPORT TO prodexport.del OF DEL
MESSAGES msg.out
SELECT * FROM product

會產生兩個檔案:

  • prodexport.del:關聯資料與 XML Data Specifier (XDS)
  • prodexport.del.001.xml:實際 XML 內容,所有 XML 文件串接在一起


圖 2:匯出主檔內容含 XDS


圖 3:XML 內容檔

XDS (XML Data Specifier) 屬性

XDS 以 <XDS .../> 標記表示,常見屬性:

  • FIL:包含 XML 資料的檔案名
  • OFF:XML 資料在檔案中的位元組偏移量
  • LEN:XML 資料長度(位元組)
  • SCH:驗證用 XML Schema 的完整 SQL 識別碼(若有)

使用 XML 選項與修飾符控制 XML 匯出

可指定 XML 檔案儲存路徑、檔名、編碼等:

EXPORT TO prodexport.del OF DEL
XML TO d:\xmlpath
XMLFILE proddesc
MODIFIED BY XMLINSEPFILES XMLNODECLARATION XMLCHAR XMLSAVESCHEMA
MESSAGES msg.out
SELECT * FROM product

主要 XML 修飾符:

修飾符說明
XMLINSEPFILES每個 XML 文件寫入獨立檔案(預設串接在單一檔案)
XMLNODECLARATION不輸出 XML 宣告標記(預設輸出含 encoding 屬性)
XMLCHARXML 資料以字元碼頁編碼(預設 Unicode),搭配 codepage 或應用程式碼頁
XMLGRAPHICXML 資料以 UTF-16 編碼,忽略 codepage 設定
XMLSAVESCHEMA保存驗證用 XML Schema,完整 SQL 識別碼存入 XDS 的 SCH 屬性


圖 4:帶 XML 選項的匯出結果

使用 XQuery 匯出 XML 資料

EXPORT 也支援直接匯出 XQuery 結果:

EXPORT TO custexport.del OF DEL
XML TO d:\xmlpath
XMLFILE custphone
MODIFIED BY XMLINSEPFILES XMLNODECLARATION
MESSAGES msg.out
SELECT XMLQUERY('$doc/customerinfo/phone' PASSING INFO AS "doc") FROM customer

上例對 CUSTOMER 表的 XML 欄位 INFO 執行 XQuery,取出每位客戶電話號碼,各結果存成獨立 XML 檔(custphone.001.xml、custphone.002.xml…),不含 XML 宣告。


圖 5:XQuery 匯出的 XML 文件範例

從 Control Center 匯出

除命令列,亦可透過 Control Center 圖形介面執行匯出,支援所有選項(含 LOB、XML),並可在「排程」索引標籤建立排程工作。


圖 6:Control Center 匯出精靈

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