2008年9月1日 星期一

pureXML (I) using DB2 9


/*
  1) register xmlschema
  2) create table with xml datatype
  3) import xml and explicit validate using SQL identifiers as well
*/


-- 首先先將xsd寫好如下 ex:region4.xsd
-- ※ 裡面包含地區代碼/地區英文名稱/地區中文名稱


< ?xml version="1.0"? >
< xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" >
< xsd:element name="region4" >
< xsd:complexType >
< xsd:sequence >
< xsd:element name="regno" type="xsd:string" / >
< xsd:element name="regename" type="xsd:string" / >
< xsd:element name="regcname" type="xsd:string" / >
< /xsd:sequence >
< /xsd:complexType >
< /xsd:element >
< /xsd:schema >


-- 將xmlschema register進去
-- http://localhost/region4是我給定的xmlschema uri
-- xsd_region4 是這個xmlschema的ID
-- 可下sql檢查是否register成功:
-- select * from syscat.xsrobjects where objectname = 'XSD_REGION4'


register xmlschema 'http://localhost/region4' from c:\region4.xsd as xsd_region4 complete

-- 建立一個有XML資料型態的TABLE

create table region4
(
  id      integer not null,
  regioninfo xml,
  constraint pk_region4 primary key (id)
);


-- 建好之後處理import要使用的檔案
-- 隨便舉例,import 三個xml檔案
-- 1.xml:


< ?xml version="1.0" encoding="UTF-8"? >
< region4 >
< regno >1< /regno >
< regename >Northern< /regename >
< regcname >北區< /regcname >
< /region4 >


-- 2.xml:


< ?xml version="1.0" encoding="UTF-8"? >
< region4 >
< regno >2< /regno >
< regename >Central< /regename >
< regcname >中區< /regcname >
< /region4 >


-- 3.xml:


< ?xml version="1.0" encoding="UTF-8"? >
< region4 >
< regno >3< /regno >
< regename >Southern< /regename >
< regcname >南區< /regcname >
< /region4 >


-- 準備要import的.del檔案。c:\region4.del
-- 用XDS指定


1,< XDS FIL='1.xml'/ >
2,< XDS FIL='2.xml'/ >
3,< XDS FIL='3.xml'/ >

-- 開始import

import from region4.del of del xml from c:/ xmlvalidate using xds default xsd_region4 insert into region4

-- 看結果

select count(*) from region4

1
---------
     3

  已選取 1 個記錄。

-- 全部都是validated過的資料

select count(*) from region4 where regioninfo is validated

1
---------
     3

  已選取 1 個記錄。