Club DB2 - いまさら後輩に聞けないXMLDB入門


4/13 19:00〜21:30@品川
http://www-06.ibm.com/jp/software/data/developer/clubdb2/18.html


DB2ネタをBlogで書こう書こうと思っていつつ、さすがにFFの日記でDB2ネタをじゃんじゃか載せるのはどうかと思うので、分離しました。
講師は野間さん。いつもは司会進行役の人だけど、XQuery関係はがんばって自分でやるらしいです。
さて、XQueryは開発屋の癖して全然知らない。とりあえずGoogle先生に聞いてみることにする。
http://www.atmarkit.co.jp/fxml/tanpatsu/19quip/quip01.html
げえ、2002年の記事だよ。なんだかんだとDB界は進化が遅いのね〜、と思いつつ、DB2ではどうかというと

Xquery
For $e in db2-fn:xmlcolumn('EMPLYEE.XMLDOC')//employee
WHERE $e/ID="001"
return $e

うーむ。プログラム言語だ…
とりあえず触ってみるってことでDB2式に書いてみると、

CREATE DATABASE testdb USING CODESET UTF-8 TERRITORY JP COLLATE USING IDENTITY
CREATE TABLE EMPLOYEE(XMLDOC XML);
INSERT INTO EMPLOYEE VALUES ('山田太郎');

ほほー、INSERT INTOとな。入れるほうはまだまだこれからだやね。
当然、XMLファイルからつっこむ方式もあるらしく、

employee.xml


山田太郎

employeeXDS.txt

本体と制御ファイル(xdsというらしい)の2ファイル書いて、いつものLOAD使ってやってみましょ。

IMPORT FROM employeeXDS.txt OF DEL XML FROM . INSERT INTO EMPLOYEE;

ふーむ。制御ファイル書くのがめんちーけど、それ以外は楽勝?
早速DB2 Express-Cにかませてみます。

C:\Program Files\IBM\SQLLIB\BIN>db2
(c) Copyright IBM Corporation 1993,2002
 DB2 ADCL 9.1.0 コマンド行プロセッサー

コマンド・プロンプトからデータベース・マネージャーのコマンド、および SQL
ステートメントを呼び出せます。 例:
    db2 => connect to sample
    db2 => bind sample.bnd

一般ヘルプには ? をタイプしてください。
コマンドのヘルプには ? command をタイプしてください。 command
は、データベース・マネージャー・コマンドの主要なキーワードの
いくつかです。 例:
 ? CATALOG DATABASE は CATALOG DATABASE コマンドのヘルプです。
 ? CATALOG          は全 CATALOG コマンドのヘルプです。

db2 対話モードを抜けるには、コマンド・プロンプトで QUIT
とタイプしてください。対話モード以外では、すべてのコマンドに接頭語 'db2'
を付ける必要があります。
現在のコマンド・オプションの設定をリストするには、 LIST COMMAND OPTIONS
とタイプしてください。

詳細は、「オンライン・リファレンス」を参照してください。

db2 => CREATE DATABASE testdb USING CODESET UTF-8
TERRITORY JP COLLATE USING IDENTITY *1
DB20000I  CREATE DATABASE コマンドが正常に完了しました。
db2 => connect to testdb

   データベース接続情報

 データベース・サーバー                                   = DB2/NT 9.1.0
 SQL 許可 ID                                              = CHABORIN
 ローカル・データベース別名                               = TESTDB

db2 => CREATE TABLE EMPLOYEE(XMLDOC XML)
DB20000I  SQL コマンドが正常に完了しました。
db2 => INSERT INTO EMPLOYEE VALUES ('山田太郎')
DB20000I  SQL コマンドが正常に完了しました。
db2 =>

はいおっけー。楽勝。さてと。

db2 => xquery db2-fn:xmlcolumn("EMPLOYEE.XMLDOC")/employee

(中略)

山田太郎

(中略)
1 レコードが選択されました。

ぎゃ。結果がすごい流れる!でも、とりあえず出てるな。
これで、DB2XQueryは動かせるっぽいから、あとは適当に遊んでみよう。
それにしても、DB2 Express-Cは強力だわぁ。無償でこのへんも絡めて遊べて、ちゃんとGUIインタフェースも付いてきてるし。昔はMSDEで(今だとSQL-Server2005 Express editionあたりかな?)遊んでたけど、こっちのほうが使い勝手がよいかも。

*1:紙面の都合で2行にしてますが、ここは1行です