DB2 9(代號 Viper)引入了革命性的 pureXML 技術,讓關聯式資料庫能原生儲存、查詢與管理 XML 資料。本教學將引導您完成核心任務:建立資料庫物件、匯入 XML 資料、驗證 XML 結構,奠定後續進階操作的基礎。
在 DB2 Viper 中,唯有 Unicode 資料庫才能同時儲存 XML 文件與傳統 SQL 資料類型(整數、日期時間、變長字串等)。請開啟 DB2 命令視窗,執行以下指令建立採用 UTF-8 編碼的測試資料庫:
create database test using codeset UTF-8 territory us
資料庫建立後,DB2 即已就緒,可直接以階層式格式儲存 XML 資料,無需額外配置。
XML 資料儲存於 XML 欄位中,這些資料表作為文件集合的邏輯容器。DB2 背後對 XML 與非 XML 資料採用不同儲存機制,但透過資料表統一管理,簡化了應用開發與整合查詢。您可定義僅含 XML 欄位、僅含傳統 SQL 欄位,或兩者混合的資料表。以下範例建立 items(商品銷售與評價)與 clients(客戶聯繫資訊)兩張表:
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
);
請注意,comments 與 contactinfo 欄位未預先定義 XML 結構。這正是 DB2 的關鍵特性:單一 XML 欄位可儲存任意格式良好的 XML 文件,無論是否關聯已註冊的 XML Schema,甚至不同 Schema 的文件皆可共存。
包含 XML 欄位的資料表同樣支援視圖建立。範例建立僅包含「Gold」等級客戶的視圖:
create view goldview as
select id, name, contactinfo
from clients where status='Gold';
本入門教學不涵蓋 XML 索引建立,但在生產環境中,定義適當的 XML 索引對查詢效能至關重要,請參考官方文件深入了解。
透過 INSERT 可直接寫入 XML 資料。若已在應用程式變數中備妥 XML 內容,此法最為便捷。互動式操作時,建議使用 DB2 Command Editor(從 Control Center 的 Tools 選單啟動)。執行以下範例:
connect to test;
insert into clients values (77, 'John Smith', 'Gold',
xmlparse(document '<addr>111 Main St., Dallas, TX, 00112</addr>'
preserve whitespace)
)
請注意:直接提供 XML 字串需呼叫 XMLPARSE 函數將字元值轉換為 XML 型別。大型或複雜文件不宜手工輸入,實務上多透過主機變數或參數標記由應用程式批次匯入。
IMPORT 工具在背景發出 INSERT 語句,適合大量資料載入。詳細用法將於後續章節說明。
