Hitachi

データベース抽出・反映サービス機能 HiRDB Dataextractor Version 10


4.4.1 実行例の詳細

HiRDB Dataextractorの実行例について説明します。

実行例のシステム構成を次の図に示します。

図4‒6 実行例のシステム構成

[図データ]

〈この項の構成〉

(1) 実行例の環境

(a) データの抽出側(HOST1)の環境

表の定義
・認可識別子user01の表の定義
CREATE TABLE T01(C01 CHAR(10),C02 CHAR(40),C03 INT)
CREATE TABLE T02(C01 CHAR(10),C02 CHAR(40),C03 INT,C04 INT)
CREATE FIX TABLE T03(C01 CHAR(10), C02 CHAR(40),C03 INT)
CREATE TABLE T04
 (C01 INT,
  C02 MVARCHAR(32),
  C03 SGMLTEXT ALLOCATE (SGMLTEXT IN RDLOB01)
   PLUGIN '<TEXTTYPE>SGML</TEXTTYPE><DTD>文書定義</DTD>',
  C04 DATE)
CREATE INDEX TEXT_IDX USING TYPE NGRAM
  ON T04(C03) IN RDLOB02
環境変数の設定
$PDDIR       /HiRDB1
$PDCONFPATH  /HiRDB1/conf
$PDUSER      "user01"/"user01"
$PDNAMEPORT  20000
$SHLIB_PATH  /HiRDB1/lib: /HiRDB1/client/lib
$PATH        /opt/HIRDBXT/bin
$LANG        ja_JP.SJIS
$XTHOST      HOST2
$XTPORTNO    20052
/etc/hostsでの反映先ホストの設定
        :
        :
160.16.150.120  HOST2
160.16.150.121  HOST3
        :
        :

(b) データの反映側(HOST2)の環境

表の定義
・認可識別子user01の表の定義
CREATE TABLE T01(C01 CHAR(10),C02 CHAR(40),C03 INT)
CREATE TABLE T02(C01 CHAR(10),C02 CHAR(40),C03 INT,C04 INT)
CREATE TABLE T04
 (C01 INT,
  C02 MVARCHAR(32),
  C03 SGMLTEXT ALLOCATE (SGMLTEXT IN RDLOB01)
   PLUGIN '<TEXTTYPE>SGML</TEXTTYPE><DTD>文書定義</DTD>',
  C04 DATE)
CREATE INDEX TEXT_IDX USING TYPE NGRAM
  ON T04(C03) IN RDLOB02
・認可識別子user02の表の定義
CREATE FIX TABLE T03(C01 CHAR(10),C02 CHAR(40),C03 INT)
/etc/servicesでのポートの定義
                      :
                      :
hirdbxt1 20052/tcp    # HiRDB Dataextractor
hirdbxt2 50000/tcp    # HiRDB Dataextractor
                      :
                      :
/etc/inetd.confでのHiRDB Dataextractor起動のための定義
                      :
                      :
hirdbxt1 stream tcp nowait user01
/opt/HIRDBXT/bin/pxtcntl pxtcntl /usr/home/user01/xtenv1
hirdbxt2 stream tcp nowait user02
/opt/HIRDBXT/bin/pxtcntl pxtcntl /usr/home/user02/xtenv2
                      :
                      :
環境変数情報設定ファイルでの環境変数の設定
・サービス名hirdbxt1,ポート番号20052の環境変数情報設定ファイル
(/usr/home/user01/xtenv1)
 
set PDDIR=/HiRDB2
set PDCONFPATH=/HiRDB2/conf
set PDUSER="user01"/"user01"
set LANG=ja_JP.SJIS
・サービス名hirdbxt2,ポート番号50000の環境変数情報設定ファイル

(/usr/home/user02/xtenv2)

set PDDIR=/HiRDB2
set PDCONFPATH=/HiRDB2/conf
set PDUSER="user02"/"user02"
set LANG=ja_JP.SJIS

(c) ファイル作成側(HOST3)の環境

/etc/servicesでのポートの定義
                     :
                     :
hirdbxt 20052/tcp    # HiRDB Dataextractor
                     :
                     :
/etc/inetd.confでのHiRDB Dataextractor起動のための定義
                     :
                     :
hirdbxt stream tcp nowait user01
/opt/HIRDBXT/bin/pxtcntl pxtcntl /usr/home/user01/xtenv
                     :
                     :
環境変数情報設定ファイルでの環境変数の設定
・サービス名hirdbxt,ポート番号20052の環境変数情報設定ファイル

(/usr/home/user01/xtenv)

set XTTMPDIR=/usr/home/user01/data
set LANG=ja_JP.SJIS

(2) 指定するコマンドとオプション

データの抽出側で,xtrepコマンドを指定します。

(a) 例1

表user01.T01をHOST2の表T01に複写します。

指定するオプションは次のとおりです。

  • 反映側のHiRDB Dataextractorが使用するポート番号は20052に設定します。

  • 既存のデータは削除しないで,データを追加します。

  • 更新前ログを取得します。

  • 一括出力ページ数は10ページに設定します。

  • 経過メッセージを1万行単位で出力します。

  • 抽出対象の表に排他制御をします。

  • ナル値の既定値は変更しません。

コマンド指定例
xtrep T01

(b) 例2

表user01.T01をHOST2の表T02に複写します。

指定するオプションは次のとおりです。

  • 反映側のHiRDB Dataextractorが使用するポート番号は20052に設定します。

  • 既存のデータを削除してデータを追加します。

  • ログを取得しません。

  • 一括出力ページ数は255ページに設定します。

  • 経過メッセージを10万行単位で出力します。

  • 抽出対象の表の排他制御はしません。

  • 列C01の値が’0000010000’以下の行を抽出し,列C04には定数0を設定します。

  • 列C01のナル値既定値を’FFFFFFFFFF’にします。

コマンド指定例
xtrep -r T02 -d -l n -n 255 -m 100 -g -s /usr/home/user01/clm 
-v /usr/home/user01/null -w /usr/home/user01/whr T01
/usr/home/user01/clmの内容
C01,C02,C03,0
/usr/home/user01/whrの内容
WHERE C01<='0000010000'
/usr/home/user01/nullの内容
C01=('FFFFFFFFFF')

(c) 例3

表user01.T03をHOST2の表T03に複写します。

指定するオプションは次のとおりです。

  • HiRDB Dataextractorが使用するポート番号は50000に設定します。

  • 既存のデータは削除します。

  • 更新前ログを取得します。

  • 一括出力ページ数は40ページに設定します。

  • 実行結果を/tmp/xtrep_logに取得します。

  • 経過メッセージを1万行単位で出力します。

  • 抽出対象の表に排他制御をします。

  • 行単位インタフェースで抽出します。

  • ナル値の既定値は変更しません。

コマンド指定例
xtrep -d -n 40 -p 50000 -e /tmp/xtrep_log -s /usr/home/user01/clm T03
/usr/home/user01/clmの内容
ROW

(d) 例4

表user01.T03をHOST3のファイルに出力します。

指定するオプションは次のとおりです。

  • DAT形式のファイルを作成します。

  • 出力ファイル名は,/usr/home/user01/data/T03にします。

コマンド指定例
xtrep -R dat -o T03 -h HOST3 T03

(e) 例5

表user01.T01をHOST3のファイルに出力します。

指定するオプションは次のとおりです。

  • DAT形式のファイルを作成します。

  • 出力ファイル名は,/usr/home/user01/data/T01にします。

  • 経過メッセージを5万行単位で出力します。

  • 列C01の値が’0000010000’以下の行を抽出し,四番目の列には定数0を設定します。

コマンド指定例
xtrep -R dat -o T01 -h HOST3 -m 50 -s /usr/home/user01/clm 
-w /usr/home/user01/whr T01
/usr/home/user01/clmの内容
C01,C02,C03,0
/usr/home/user01/whrの内容
WHERE C01<='0000010000'

(f) 例6

SGMLTEXT型の列を含む表user01.T04を,HOST2の表T04に複写します。

シェルを作成してxtrepコマンドを実行します。

  • あらかじめ,SGMLTEXT型の列の原文書(実データ)の最大長を求めます。求めた最大長を,環境変数XTLOBBUFSIZEに設定します。

  • HOST2の/opt/HIRDBXT/spool/下のxt_file1ファイルに,10Mバイトまで書き込み,xt_file1ファイルがいっぱいになったらxt_file2ファイルにデータを書き込みます。

  • 既存のデータを削除してデータを追加します。

シェル作成例
  #!/bin/csh -f
  #--------------------------------------------------------------
  #SGMLTEXT列のMAXサイズ取得
 
1. echo 'max(length(extracts(C03)))' > xt_clm
2. xtrep -R dat -o size -s xt_clm -h `hostname` T04
  rm -f xt_clm
 
  #--------------------------------------------------------------
  #xtrepパラメタ,コマンド作成
 
3. echo 'C01,C02,extracts(C03),C04' > xt_clm
 
  echo '#! /bin/csh -f'                              > xt_exec
4. echo 'setenv XTERRLEVEL 1'                         >> xt_exec
  echo 'setenv XTHOST HOST2'                         >> xt_exec
  echo 'setenv XTFILESIZE 10000000'                  >> xt_exec
5. echo 'setenv XTLOBBUFSIZE \c'                      >> xt_exec
  cat  /opt/HIRDBXT/spool/size | cut -c2-11          >> xt_exec
  echo 'xtrep -d -o xt_file1,xt_file2 -s xt_clm T04' >> xt_exec
  chmod 777 xt_exec
 
  #--------------------------------------------------------------
  #xtrepの実行
 
6. xt_exec
 
  rm -f /opt/HIRDBXT/spool/size
  rm -f xt_clm
  rm -f xt_exec
説明
  1. 抽出表user01.T04のSGMLTEXT型の列(C03)の実データの最大長を求めるために,列名記述ファイルxt_clmを作成します。

  2. xtrepコマンドに「1.」で作成した列名記述ファイルxt_clmを指定して実行し,抽出表user01.T04のSGMLTEXT型の列(C03)の実データの最大長を,HOST1の/opt/HIRDBXT/spool/sizeに出力します。

  3. 抽出表user01.T04の抽出をするために,列名記述ファイルxt_clmを作成します。

  4. xtrepコマンドが使用する環境変数,コマンドラインをxt_execに出力します。

  5. 環境変数XTLOBBUFSIZEに,/opt/HIRDBXT/spool/sizeに出力した実データの最大長を設定します。

  6. xtrepコマンドに「3.」で作成した列名記述ファイルxt_clmを指定して実行し,抽出表user01.T04を反映表T04に反映します。

(g) 例7

表user01.T01と表user01.T02を結合して(SQLのJOINを使って)HOST3のファイルに出力します。

指定するオプションは次のとおりです。

  • バイナリ形式のファイルを作成します。

  • 出力ファイル名は,/usr/home/user01/data/T01_T02にします。

  • 抽出対象の表の排他制御はしません。

  • 表user01.T01の列C01,列C02と表user01.T02の列C04を抽出対象にします。

  • 表user01.T01の列C01の格納値と表user01.T02の列C01の格納値が一致するデータを抽出します。

コマンド指定例
xtrep -R bin -o T01_T02 -h HOST3 -g -s /usr/home/user01/retsu
/usr/home/user01/hyou
データの抽出側(HOST1)に追加する環境変数の設定

$XTSQL 1

/usr/home/user01/retsuの内容
T01.C01,T01.C02,T02.C04
/usr/home/user01/hyouの内容
T01 INNER JOIN T02 ON T01.C01=T02.C01 WHERE T01.C01<='0000010000'