完成三項核心任務:建立管理 XML 的資料庫物件 → 使用 INSERT/IMPORT 載入 XML 資料 → 以 XML Schema 驗證資料完整性。後續文章將涵蓋 SQL/XML、XQuery 查詢與 Java 應用開發。
唯有 Unicode 資料庫才能同時儲存 XML 文件與傳統 SQL 型別。
CREATE DATABASE test USING CODESET UTF-8 TERRITORY US;
CONNECT TO test;
CREATE TABLE items (
id INT PRIMARY KEY NOT NULL,
brandname VARCHAR(30),
itemname VARCHAR(30),
sku INT,
srp DECIMAL(7,2),
comments XML
);
CREATE TABLE clients (
id INT PRIMARY KEY NOT NULL,
name VARCHAR(50),
status VARCHAR(10),
contactinfo XML
);
關鍵特性:XML 欄位 無需預先定義結構,單一欄位可存放不同 Schema 或無 Schema 的 Well-formed XML 文件。
CREATE VIEW goldview AS
SELECT id, name, contactinfo
FROM clients WHERE status = 'Gold';
視圖操作與傳統表無異,支援 XML 欄位投影。
使用 DB2 Command Editor (Control Center → Tools → Command Editor):
CONNECT TO test;
INSERT INTO clients VALUES (77, 'John Smith', 'Gold',
XMLPARSE(DOCUMENT '111 Main St., Dallas, TX, 00112 ' PRESERVE WHITESPACE)
);
XMLPARSE 將字串轉為 XML 型別值。
clients.del),每行一筆,XML 資料以 XDS (XML Data Specifier) 參考外部檔:77,"John Smith","Gold"," "
78,"Ella Kimpton","Gold"," "
...
client3227.xml):
456 Oak Ave, Seattle, WA, 98101
206-555-0101
ella@kimpton.com
IMPORT FROM clients.del OF DEL XML FROM C:/XMLFILES
INSERT INTO user1.clients;
若某列無 XML 檔,該欄位存入 NULL。
可用文字編輯器、WebSphere Studio (右鍵 XML → Generate → XML Schema) 或專用工具 (如 MDXSYS) 產生。範例 Schema (ClientInfo.xsd) 允許 0~5 個 email 元素,型別為字串。
-- 視情況增加應用程式堆疊
UPDATE DB CFG FOR test USING APPLHEAPSZ 10000;
-- 註冊並完成
REGISTER XMLSCHEMA 'https://mysample.org'
FROM 'C:/XMLFiles/ClientInfo.xsd'
AS user1.mysample COMPLETE;
註冊不綁定特定表/欄位,一個 Schema 可驗證多個 XML 欄位。
IMPORT FROM clients.del OF DEL XML FROM C:/XMLFILES
XMLVALIDATE USING XDS DEFAULT user1.mysample
INSERT INTO user1.clients;
違反 Schema 的整列資料會被拒絕,IMPORT 輸出會顯示拒筆數 (圖 8)。XMLVALIDATE 子句亦可用於 INSERT 陳述式。
生產環境務必對 XML 欄位建立適當的 XML 索引 (參考文件「DB2 pureXML 索引技術」),否則大量資料查詢將全表掃描。
DB2 Viper 提供原生 XML 能力:新資料型別、引擎級自動儲存處理、Schema 驗證。本文示範建庫、建表、載入 (INSERT/IMPORT)、驗證全流程。下一步將探討 SQL/XML 與 XQuery 查詢技術。