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 レコードが選択されました。
ぎゃ。結果がすごい流れる!でも、とりあえず出てるな。
これで、DB2でXQueryは動かせるっぽいから、あとは適当に遊んでみよう。
それにしても、DB2 Express-Cは強力だわぁ。無償でこのへんも絡めて遊べて、ちゃんとGUIインタフェースも付いてきてるし。昔はMSDEで(今だとSQL-Server2005 Express editionあたりかな?)遊んでたけど、こっちのほうが使い勝手がよいかも。
*1:紙面の都合で2行にしてますが、ここは1行です