導出 XML 數據
隨著 DB2 9.1 中引入了本地 XML 支持,導出實用程序也被擴展,以支持 XML。如果沒有指定任何與 XML 相關的選項而導出一個表(用 XML 數據定義的),那麼相關的 XML 數據將被寫入到與導出的其他關系數據分開的一個或多個文件中。讓我們看一個例子。下面的 EXPORT 命令是在 PRODUCT 表上發出的,該表中定義了一個 XML 列:
EXPORT TO prodexport.del DEL
MESSAGES msg.out
SELECT * FROM product
在這個例子中,導出實用程序將生成兩個輸出文件。其中一個輸出文件是 prodexport.del,該文件將包含表中的關系數據和 XML data specifIEr (XDS)。
XDS 是用名為 "XDS" 的一個 XML 標記表示的字符串。它具有一些屬性,用於描述關於列中實際的 XML 數據的信息。下面是 XDS 字符串中可能出現的一些屬性:
FIL 指定包含 XML 數據的文件的文件名。
OFF 指定 XML 數據在 FIL 屬性指定的文件中的字節偏移量。
LEN 指定 FIL 屬性中指定的文件中的 XML 數據的字節長度。
SCH 指定用於驗證 XML 文檔的 XML 模式的全限定 SQL 標識符。下一屏中將討論這個屬性。
從前面 prodexport.del 的內容中可以看出,第一個 XML 數據存儲在 prodexport.del.001.XML 中,從 0 字節偏移位置開始,長度為 252 個字節。
在這個例子中,導出實用程序生成的另一個文件是 prodexport.del.001.xml,該文件包含 XML 內容。導出的每個 XML 數據都被連接在一起寫入到這個文件中。下面是 prodexport.del.001.XML 文件的內容。
使用 XML 選項和修飾符導出 XML 數據
與導出大型對象一樣,您可以指定被導出 XML 文檔的存儲路徑,還可以指定輸出文件的文件名。考慮下面的例子:
EXPORT TO prodexport.del DEL
XML TO d:\XMLpath
XMLFILE proddesc
MODIFIED BY XMLINSEPFILES XMLNODECLARATION XMLCHAR
XMLSAVESCHEMA
MESSAGES msg.out
SELECT * FROM product
在這個例子中,PRODUCT 表的關系數據被導出到 prodexport.del 文件。然後,所有 XML 數據都被寫入到 XML TO 子句指定的目錄 d:\xmlpath 中。包含 XML 數據的文件被命名為 proddesc.ext.xml,其中 ext 是一個序列號(例如 proddesc.001.xml、proddesc.002.xml、proddesc.003.xml 等)。基本文件名是用 XMLFILE 選項定義的。
您也許還注意到,這個例子中使用了一些修飾符。下面對所有與 XML 相關的修飾符作一個總結。
XMLINSEPFILES 導致導出實用程序將導出的每個 XML 文檔寫入到不同的 XML 文件中。
XMLNODECLARATION 表明導出 XML 數據無需使用 XML 聲明標記。默認情況下,XML 標記被寫在 XML 文檔的開頭,並包括一個編碼屬性。
XMLCHAR 表明 XML 數據以字符碼頁編碼。默認情況下,XML 數據是以 Unicode 編碼的。當使用這個修飾符的時候,使用的是 codepage 文件類型修飾符或應用程序碼頁。
XMLGRAPHIC 表明無論是 codepage 文件類型修飾符還是應用程序碼頁,導出的 XML 數據將以 UTF-16 碼頁編碼。注意,這個例子中沒有使用 XMLGRAPHIC。
我們要介紹的最後一個選項是 XMLSAVESCHEMA。當插入一個 XML 文檔時,可以用一個 XML 模式對其進行驗證。XMLSAVESCHEMA 選項導致導出實用程序還保存用於每個導出的 XML 數據的 XML 模式。那個模式的全限定 SQL 標識符將被存儲為相應的 XML data specifIEr(XDS)中的一個 SCH 屬性。注意,如果沒有用 XML 模式驗證導出的 XML 文檔,或者該模式對象不再存在於數據庫中,那麼相應的 XDS 中將不包括 SCH 屬性。
下面顯示了前面的導出例子的結果。