3.1.1 必要なデータの抽出

HiRDBのDBからデータを抽出する場合は,xtrepコマンドを使用します。xtrepコマンドで,抽出する表の名称や抽出方法を指定して,必要なデータだけを抽出できます。

HiRDB Dataextractorは,抽出したデータを反映対象の表の左の列から順に対応づけて反映します。このため,抽出対象の表と反映対象の表とで表の形式(列数,列の並び順)が異なる場合は,xtrepコマンドを使用して反映対象の表の形式に合わせてデータを抽出する必要があります。

HiRDB Dataextractorでは次の抽出ができます。

<この項の構成>
(1) 表単位の抽出
(2) 抽出する列の選択,並べ替え
(3) 抽出する行の選択,並べ替え
(4) 行単位インタフェースでの抽出
(5) ナル値の既定値の選択
(6) 繰返し列の抽出
(7) 抽象データ型の列の抽出

(1) 表単位の抽出

同一形式の表から,同一形式の表ヘ表単位に抽出できます。

例を次に示します。

(例)
抽出側の受注表を,反映側の受注表に反映します。
抽出側の表と反映側の表とは,形式,表名,列名などすべて同一です。

表単位の抽出例を次の図に示します。

図3-2 表単位の抽出

[図データ]

(2) 抽出する列の選択,並べ替え

抽出する列を選択したり,並べ替えたりして抽出できます。

列の選択や並べ替えは,HiRDBの次のSQLで指定します。

xtrepコマンドでSELECT文の選択式を記述したファイルの名称を指定します。

このファイルを列名記述ファイルと呼びます。

例を次に示します。

(例)
受注表から次の列を選択し,並べ替えて反映します。
  • 商品コード
  • 受注量
  • 伝票番号

抽出する列の選択や並べ替えの例を次の図に示します。

図3-3 抽出する列の選択,並べ替え

[図データ]

(3) 抽出する行の選択,並べ替え

抽出する行を選択したり,任意の列のデータの昇順または降順に行を並べ替えたりして抽出できます。

行の選択や並べ替えは,HiRDBの次のSQLで指定します。

行を選択して抽出する場合は,SELECT文のWHERE句で選択する条件を指定します。行を並べ替えて抽出する場合は,SELECT文のORDER BY句でソートのキーや並べ替え方法を指定します。

xtrepコマンドでSELECT文のWHERE句,ORDER BY句を記述したファイルの名称を指定します。

このファイルを表式記述ファイルと呼びます。

例を次に示します。

(例)
受注表から次の行を選択し,並べ替えて反映します。
  • 受注量が10以上の行を抽出します。
  • 得意先コードの昇順に並べ替えます。

抽出する行の選択や並べ替えの例を次の図に示します。

図3-4 抽出する行の選択,並べ替え

[図データ]

(4) 行単位インタフェースでの抽出

FIX属性の表から抽出する場合,行単位インタフェースで抽出できます。行単位インタフェースで抽出すると,列ごとに検索するオーバヘッドがなくなるため,処理性能を向上できます。

行単位インタフェースでの抽出は,HiRDBの次のSQLで指定します。

xtrepコマンドでSELECT文の選択式を指定した列名記述ファイルの名称を指定します。

例を次に示します。

(例)
抽出側の受注表を,行単位インタフェースで反映側の受注表に反映します。
抽出側の表と反映側の表とは,形式,表名,列名などすべて同一です。

行単位インタフェースでの抽出例を次の図に示します。

図3-5 行単位インタフェースでの抽出

[図データ]

(5) ナル値の既定値の選択

データの抽出時,抽出したデータがナル値の場合は,HiRDB Dataextractorは抽出したデータにHiRDB Dataextractorのナル値の既定値を設定します。データの反映時は,HiRDB Dataextractorは抽出データとHiRDB Dataextractorのナル値の既定値とを比較して,一致した場合にナル値を設定します。該当する列に非ナル値制約がある場合は,ナル値の既定値をデータとして反映します。

このため,抽出するデータ中にHiRDB Dataextractorのナル値の既定値と同じ値がある場合は,ナル値の既定値を変更する必要があります。ナル値の既定値の変更は,xtrepコマンドの-vオプションナル値情報ファイルに指定します。

HiRDB Dataextractorのナル値の既定値(-vオプション省略時のナル値の既定値),およびナル値情報ファイルでの指定によって設定されるナル値の既定値については,「表4-11 ナル値の既定値」を参照してください。

例を次に示します。

(例)
文字列データのナル値の既定値を変更します。
  • 抽出対象の列CHAR01は,ナル値を既定値のまま使用します。この場合,データに’##…#’があるときは,その値にもナル値が設定されます。
  • 抽出対象の列CHAR02は,ナル値の既定値を空白に変更します。この場合,データに空白があるときはその値にもナル値が設定されます。
  • 抽出対象の列CHAR03は,ナル値の既定値を定数’FFFF’に変更します。この場合,データに定数で指定した値と同じ値があるときは,その値にもナル値が設定されます。

ナル値の既定値の変更例を次の図に示します。

図3-6 ナル値の既定値の変更

[図データ]

HiRDB Dataextractorが仮定するナル既定値の省略時仮定値,およびナル値情報ファイルによるナル既定値の指定だけでは,抽出表の実データがナル既定値と同じ場合にナル値として反映されてしまいます。そこで,次のどちらかを実行することで,実データをナル値として反映することを防ぎます。

(a) ナル値の既定値の省略仮定値変更

次に示すデータ型(データとして指定できない範囲の値があるもの)については,HiRDB Dataextractorが仮定するナル既定値の省略時仮定値として,実データとして指定できない範囲の値を設定することによって,実データをナル値として反映することを防ぎます。

なお,その他のデータ型についてはデータとして指定できない値がないため,従来通り運用上存在しない値をナル既定値として設定する必要があります。

(b) 抽出データへのナル値判定情報の追加

ナル既定値を使用しないで,抽出データにナル値を判定するための情報を追加することによって,実データがナル値として反映されることを防ぎます。

なお,抽出データにナル値判定情報を追加した場合のデータ形式はデータベース作成ユティリティ(pdload)の-Wオプション指定時の入力データ形式となります。

(6) 繰返し列の抽出

HiRDB Dataextractorでは,繰返し列を抽出および反映対象にできます。

繰返し列を使用する場合の,次の項目について説明します。

(a) 繰返し列がある場合の,抽出側と反映側との列の組み合わせ

繰返し列がある場合の,抽出側と反映側との列の組み合わせの可否を,次の表に示します。

表3-1 繰返し列がある場合の抽出側と反映側との列の組み合わせの可否

抽出側の列反映側の列要素数対応
繰返し列以外繰返し列以外
繰返し列全要素×
特定要素
繰返し列全要素繰返し列以外×
繰返し列全要素抽出側=反映側
抽出側<反映側×
抽出側>反映側×
特定要素
特定要素繰返し列以外
繰返し列全要素×
特定要素
(凡例)
要素数:繰返し列の要素の数を示します。
対応:HiRDB Dataextractorのとる処置を示します。
○:正常に処理します。
×:処理を終了します。
-:該当しません。
(b) 繰返し列のデータ形式およびナル値反映方法の指定

繰返し列を使用する場合,次の指定によって,繰返し列をファイルに出力するときのデータ形式およびナル値反映方法を指定できます。

環境変数XTARRAYは,表単位にデータ形式,ナル値反映方法について設定する場合に指定します。列単位に設定する場合には,xtrepコマンドの-vオプションに指定するナル値情報ファイルで指定します。環境変数XTARRAYと,ナル値情報ファイルでの指定とを同時に指定した場合には,ナル値情報ファイルでの指定が優先されます。環境変数XTARRAYを省略した場合は,VVおよびCが仮定されます。

また,環境変数XTNLDFLTに2を指定した場合,HiRDB反映またはバイナリ形式のファイル作成時は,この環境変数の指定は無視され,VVおよびCとして処理されます。

データ形式
繰返し列をファイルに出力する場合の,データの形式を指定します。
FF:列の先頭に要素数がなく,列の要素すべてにデータがある形式
FV:列の先頭に要素数があり,列の要素すべてにデータがある形式
VV:列の先頭に要素数があり,要素数分のデータがある形式
ナル値反映方法
繰返し列をHiRDBの表に反映する場合の,要素すべてがナル値のときのナル値の反映方法を指定します。ナル値反映方法は,HiRDBの表に反映する場合で,データ形式にFFを指定するときにだけ指定できます。
C:要素全体にデータがないとき,列全体をナル値として反映します。
E:要素全体にデータがないとき,各要素をナル値として反映します。

繰返し列のデータ形式とナル値反映方法の指定できる組み合わせを,次の表に示します。

表3-2 繰返し列のデータ形式とナル値反映方法の指定の組み合わせ

実行する機能指定値指定可否
データ形式ナル値反映方法
HiRDBの表に反映FFなし
C
E
FVなし
C×
E
VVなし
C×
E
ファイル作成バイナリ形式FFなし
C×
E
FVなし
C×
E
VVなし×
C
E
DAT形式FFなし
C×
E
FVなし×
C
E
VVなし
C×
E
(凡例)
○:指定できます。
×:指定できません。
(c) データ形式およびナル値反映方法の指定時の注意事項

データ形式およびナル値反映方法の指定時の注意事項を次に示します。

(例)
同一のHiRDBシステムで,HiRDB DataextractorとHiRDB Datareplicatorを同時に使用している場合で,次の条件を満たしたときは,HiRDB Datareplicatorが反映処理時にエラーになります。
  1. HiRDB Dataextractorで,データ形式にFF,ナル値反映方法にEを指定して,抽出側の列全体のナル値を要素全体のナル値として反映する。
  2. 1.のレコードに対して,UAPから更新(要素の追加)があり,それをHiRDB Datareplicatorで反映する。
(d) 繰返し列のファイル出力時のデータ形式

HiRDBの表への反映時の繰返し列のデータ形式(バイナリ形式)を,「表3-3 HiRDBの表への反映時の繰返し列のデータ形式(バイナリ形式)」に示します。

バイナリ形式のファイル作成時の繰返し列のデータ形式を,「表3-4 バイナリ形式のファイル作成時の繰返し列のデータ形式」に示します。

DAT形式のファイル作成時の繰返し列のデータ形式を,「表3-5 DAT形式のファイル作成時の繰返し列のデータ形式」に示します。

環境変数XTNLDFLTに2を指定した場合のHiRDBの表への反映時およびバイナリ形式のファイル作成時の繰返し列のデータ形式を,「表3-6 環境変数XTNLDFLTに2を指定した場合のHiRDBの表への反映時およびバイナリ形式のファイル作成時の繰返し列のデータ形式」に示します。

表3-3 HiRDBの表への反映時の繰返し列のデータ形式(バイナリ形式)

抽出データ繰返し列に対する指定値出力データの内容反映データ
データ形式ナル値反映方式
要素ありすべてありFF要素1要素Nすべてあり
FVN要素1要素N
VVN要素1要素N
途中までありFF要素1要素nナル値N途中まであり
FVn要素1要素nナル値N
VVn要素1要素n 
すべての要素なし列全体ナル値FF指定なしナル値1ナル値N列全体ナル値
Cナル値1ナル値N
Eナル値1ナル値N各要素ナル値
FV0ナル値1ナル値N列全体ナル値
VV0 
全要素ナル値FF指定なしナル値1ナル値N列全体ナル値
Cナル値1ナル値N
Eナル値1ナル値N各要素ナル値
FVNナル値1ナル値N各要素ナル値
VVNナル値1ナル値N
(凡例)
-:該当しません。
N:最大要素数
n:実要素数
要素x:x番目の要素を示します。
ナル値x:x番目のナル値を示します。
注※
出力データ中に設定される各要素の内容を,左から順番に示します。空欄は,要素がないことを示します。

表3-4 バイナリ形式のファイル作成時の繰返し列のデータ形式

抽出データ繰返し列に対する指定値出力データの内容
データ形式ナル値反映方式
要素ありすべてありFF要素1要素N
FVN要素1要素N
VVN要素1要素N
途中までありFF要素1要素nナル値N
FVn要素1要素nナル値N
VVn要素1要素n 
すべての要素なし列全体ナル値FFナル値1ナル値N
FV0ナル値1ナル値N
VV0 
全要素ナル値FFナル値1ナル値N
FVNナル値1ナル値N
VVNナル値1ナル値N
(凡例)
-:該当しません。
N:最大要素数
n:実要素数
要素x:x番目の要素を示します。
ナル値x:x番目のナル値を示します。
注※
出力データ中に設定される各要素の内容を,左から順番に示します。空欄は,要素がないことを示します。

表3-5 DAT形式のファイル作成時の繰返し列のデータ形式

抽出データ繰返し列に対する指定値出力データの内容備考
データ形式ナル値反映方式
要素ありすべてありFF要素1,…,要素Nコンマ数=N-1
FV指定不可
VVN,要素1,…,要素Nコンマ数=N
途中までありFF要素1,…,要素n,…,コンマ数=N-1
FV指定不可
VVn,要素1,…,要素nコンマ数=n
すべての要素なし列全体ナル値FF,…,コンマ数=N-1
FV指定不可
VV0コンマ数=0
全要素ナル値FF,…,コンマ数=N-1
FV指定不可
VVN,…,コンマ数=N
(凡例)
-:該当しません。
N:最大要素数
n:実要素数
要素x:x番目の要素を示します。
ナル値x:x番目のナル値を示します。
注※
出力データ中に設定される各要素の内容を,左から順番に示します。

表3-6 環境変数XTNLDFLTに2を指定した場合のHiRDBの表への反映時およびバイナリ形式のファイル作成時の繰返し列のデータ形式

抽出データ出力データの内容1反映データ2
要素ありすべてありNナル値フラグ1要素1ナル値フラグN要素N要素あり
途中までありnナル値フラグ1要素1ナル値フラグn要素n途中まであり
要素なし列全体ナル値(オフセットに0を設定し,列データは作成しない)列全体ナル値
全要素ナル値Nナル値フラグ1ナル値フラグN 全要素ナル値
(凡例)
N:最大要素数(2バイトの領域)
n:実要素数(2バイトの領域)
要素x:x番目の要素を示します。ナル値フラグが,1の場合には作成されません。
ナル値フラグx:x番目のナル値フラグ(1バイトの領域)を示します。
ナル値フラグの設定内容と要素の関係を次に示します。
抽出データナル値フラグ要素情報の作成有無
ナル値1作成しません。ナル値フラグだけとなります。
非ナル値0作成します。
注※1
出力データ中に設定される各要素の内容を左から順番に示します。空欄は,要素がないことを示します。
注※2
HiRDBの表への反映を行った場合の反映データの状態を示します。

(7) 抽象データ型の列の抽出

HiRDB Dataextractorは,抽象データ型ADT:Abstract Data Type)の列を抽出および反映対象にできます。

(a) SGMLTEXT型の列の抽出

SGMLTEXT型では,原文書をBLOB属性で定義しています。HiRDB Dataextractorは,この原文書を抽出します。

SGMLTEXT型については,マニュアル「HiRDB 全文検索プラグイン HiRDB Text Search Plug-in Version 8」を参照してください。

ここでは,SGMLTEXT型のデータの抽出方法について説明します。

(i)環境変数の設定

SGMLTEXT型のデータを抽出するためには,次の環境変数の指定が必要です。

(ii)xtrepコマンドでの指定

SGMLTEXT型のデータを抽出するためには,xtrepコマンドに次の指定が必要です。

(iii)注意事項
(b) XML型の列の抽出

XML型では,原文書をBINARY属性で定義しています。HiRDB Dataextractorは,この原文書を抽出します。

XML型については,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。

ここでは,XML型のデータの抽出方法について説明します。

(i)環境変数の設定

XML型のデータを抽出するためには,次の環境変数の指定が必要です。

(ii)xtrepコマンドでの指定

XML型のデータを抽出するためには,xtrepコマンドに次の指定が必要です。

(iii)注意事項
(c) FREEWORD型の列の抽出

FREEWORD型では,原文書をVARCHAR属性で定義しています。HiRDB Dataextractorは,この原文書を抽出します。

FREEWORD型については,マニュアル「HiRDB 全文検索プラグイン HiRDB Text Search Plug-in Version 8」を参照してください。

ここでは,FREEWORD型のデータの抽出方法について説明します。

(i)xtrepコマンドでの指定

FREEWORD型のデータを抽出するためには,xtrepコマンドに次の指定が必要です。

(ii)注意事項

FREEWORD型のデータを抽出する場合は,次の条件を満たしている必要があります。