CREATE DATABASE test USING CODESET UTF-8 TERRITORY US;
僅 Unicode 數據庫支持原生 XML 類型與 SQL 類型混存。
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 文檔。
CREATE VIEW goldView AS
SELECT id, name, contactinfo FROM clients WHERE status = 'Gold';
教程數據量小暫不創建 XML 索引,生產環境必須定義專用 XML 索引以達最佳性能。
使用 DB2 Command Editor(Control Center → Tools → Command Editor):
CONNECT TO test;
INSERT INTO clients VALUES (77, 'John Smith', 'Gold',
XMLPARSE(DOCUMENT '<addr>111 Main St., Dallas, TX, 00112</addr>'
PRESERVE WHITESPACE));
XMLPARSE 將字符串轉為 XML 類型;大文檔不適用手工輸入。
準備定界 ASCII 文件 clients.del(慣例 .del 後綴):
77,"John Smith","Gold"," "
78,"Ella Kimpton","Gold"," "
...
XML 文件內容示例 client3227.xml:
<Client>
<Address><street>5401 Julio Ave.</street><city>San Jose</city><state>CA</state><zip>95116</zip></Address>
<phone><work>4084633000</work><home>4081111111</home><cell>4082222222</cell></phone>
<fax>4087776666</fax>
<email>love2shop@yahoo.com</email>
</Client>
無 XML 文件的行省略 XDS 標籤,該列存 NULL。
執行導入:
IMPORT FROM clients.del OF DEL
XML FROM C:/XMLFILES
INSERT INTO user1.clients;
minOccurs/maxOccurs 控制元素出現次數,如 email 0..5 次大 Schema 需增大應用堆:
CONNECT TO test;
UPDATE DB CFG USING APPLHEAPSZ 10000;
單文件獨立 Schema 一條命令完成:
REGISTER XMLSCHEMA 'https://mysample.org'
FROM 'C:/XMLFiles/ClientInfo.xsd'
AS user1.mysample COMPLETE;
https://mysample.org:命名空間 URI 佔位符,供實例文檔引用user1.mysample:SQL Schema + XML Schema 名COMPLETE:標註註冊完成,可用於驗證注意:Schema 註冊與表列無綁定關係,一個 Schema 可驗證多表多列。
IMPORT FROM clients.del OF DEL
XML FROM C:/XMLFILES
XMLVALIDATE USING XDS DEFAULT user1.mysample
INSERT INTO user1.clients;
不符合 Schema 的行整行拒絕,輸出顯示拒絕計數與錯誤詳情。
XMLVALIDATE 子句同樣適用於 INSERT 語句。
完成上述步驟即掌握 DB2 pureXML 存儲與驗證核心流程。後續將講解 SQL/XML、XQuery 查詢及 Java 應用開發。