2007/03/15
MAGIC + DB2 で XQuery(2)
データベースとテーブルの作成
なんかもうすぐ春という季節になりましたが、如何お過ごしでしょうか?
今日は確定申告の締切日でしたが、医療費控除の申告をようやくすませて、家内共々ほっとしているところです。なんかこの2・3年、ギリギリの日に提出することが続いています・・・(^^;
さて、いきなり始まったDB2シリーズですが、今とあるシステムの試作にDB2 9を使って取り組んでいるんです。
結構、試行錯誤の連続なんですね。でも、こういう風にブログに書き込むと、頭の中が整理されて良いものです。
モノになるのかならないのかまだ分からないんですが、しばしお付き合い下さい。
では、今回は、テーブルを作るところからです。
データベースとテーブルの作成は、DB2の「コマンドウインドウ」(CLP-「コマンドラインプロセッサー」とも言う)を使って行い、その作成結果をMAGICの「定義取得」で行う手順について説明します。
「コマンドウインドウ」はいわゆる「DOS窓」みたいなものですが(実際にDOSコマンドが入力できます。)、コマンドラインの先頭に「DB2」を付加することによりDB2に対するコマンド命令を操作することが可能です。
- インスタンスの起動
インスタンスが起動していない場合は、「DB2START」コマンドによりそれを起動します。
DB2START
- データベースの作成
次のコマンドにより、「DB2XML」というデータベースを作成します。XMLタイプのカラムを使う場合は、コードセットをユニコードにします。
CREATE DATABASE DB2XML ON C USING CODESET UTF-8 TERRITORY JP
- データベースへの接続
作成したデータベースに接続します。DB2はログインしているユーザを認識するので、ユーザ名の指定は不要です。もし指定するなら、下記のコマンドの後に、「 user ユーザ名 using パスワード」を追加します。
CONNECT TO DB2XML
- テーブルの作成
次のコマンドにより、「XMLDBTEST」というテーブルを作成します。
CREATE TABLE DB2ADMIN.XMLDBTEST(DATAID CHAR(20) NOT NULL,
ここで、テーブル名の先頭に付加している「DB2ADMIN」は「スキーマ」と呼ばれるものです。データベースオブジェクトを論理的にグループ化するためのものですが、何もつけない場合は、ユーザー名が付加されますので、敢えて固定的なものを指定しておいたほうが良いと思います。
DATAXML XML,CONSTRAINT DATAID PRIMARY KEY(DATAID))
最初のカラムが「DATAID」という名前の文字タイプの項目です。二番目のカラムは「DATAXML」という名前の「XML」タイプ(DB2 9で新しく追加された型)の項目です。
最初の「DATAID」というカラムはインデックスも作成しておきます。 - データベースへの接続の終了
データベースへの接続を終了します。
CONNECT RESET
実際の実行画面は次のようになります。

今回は、コマンドウインドウで操作しましたが、「DB2CMD」という実行形式を使用し、テキストファイルにコマンドを書いて渡すことにより同様の処理が可能です。
MAGICからは、外部コール、「OSコマンド」で、表示を「M=最小化」や「H=なし」を選択すれば殆ど分からなくなります。
DB2CMD /c /w /i DB2 -f 処理ファイル -zログファイル
MAGICでの定義取得
MAGIC V10により、作成したテーブルを定義取得してみます。
- データベースの定義
MAGIC V10を起動し、データベースの定義を実行します。(オプション→設定→データベース)
DBMSに「DB2」を選択します。「DB名」には、作成したデータベース名「DB2XML」を設定します。(「DB名」には論理名も使用できるようです。)
- 定義取得
データリポジトリを開き、定義を追加します。
「データベース」には1で登録したDB2用のものを選択します。
名前に「XMLDBTEST」を入れます。
特性画面を開き(「Alt+Enter」)、「SQL」タブの「オーナ名」にテーブルを作成するときに指定したスキーマ名「DB2ADMIN」を入力します。(「オーナ名」にも論理名が使えるようです。)
最後に「定義取得」を実行します。(「オプション」→「定義取得」、もしくは「F9」キー)
しばらくすると処理が終了し、テーブルのカラムやインデックスが自動的に作成されます。
- カラム属性の修正
自動的に作成されたカラム「DATAXML」は若干の修正が必要です。
- 「型」を「A=文字」から「B=BLOB」に変更します。
- 特性画面のSQLタイプを「XML」にします。(必須でないかもしれません。)
- 特性画面のスタイルの「GUI表示形式」、「GUI表示形式テーブル」を「I=リッチエディット」等に変更します。(必須でないかもしれません。)
- テスト実行
変更内容を保存して実行(「Ctrl+G」キー)してみてください。
「DATAXML」カラムへは入力できませんが、「DATAID」に適当な文字を入力してみて、レコードの追加や削除ができればOKです。
