3.1.1 必要なデータの抽出
HiRDBのDBからデータを抽出する場合は,xtrepコマンドを使用します。xtrepコマンドで,抽出する表の名称や抽出方法を指定して,必要なデータだけを抽出できます。
HiRDB Dataextractorは,抽出したデータを反映対象の表の左の列から順に対応づけて反映します。このため,抽出対象の表と反映対象の表とで表の形式(列数,列の並び順)が異なる場合は,xtrepコマンドを使用して反映対象の表の形式に合わせてデータを抽出する必要があります。
HiRDB Dataextractorでは次の抽出ができます。
-
表単位の抽出
-
抽出する列の選択,並べ替え
-
抽出する行の選択,並べ替え
-
行単位インタフェースでの抽出
-
ナル値の既定値の選択
-
繰返し列の抽出
-
抽象データ型の列の抽出
- 〈この項の構成〉
(1) 表単位の抽出
同一形式の表から,同一形式の表ヘ表単位に抽出できます。
例を次に示します。
- (例)
-
抽出側の受注表を,反映側の受注表に反映します。
抽出側の表と反映側の表とは,形式,表名,列名などすべて同一です。
表単位の抽出例を次の図に示します。
|
|
(2) 抽出する列の選択,並べ替え
抽出する列を選択したり,並べ替えたりして抽出できます。
列の選択や並べ替えは,HiRDBの次のSQLで指定します。
xtrepコマンドでSELECT文の選択式を記述したファイルの名称を指定します。
例を次に示します。
- (例)
-
受注表から次の列を選択し,並べ替えて反映します。
-
商品コード
-
受注量
-
伝票番号
-
抽出する列の選択や並べ替えの例を次の図に示します。
|
|
(3) 抽出する行の選択,並べ替え
抽出する行を選択したり,任意の列のデータの昇順または降順に行を並べ替えたりして抽出できます。
行の選択や並べ替えは,HiRDBの次のSQLで指定します。
行を選択して抽出する場合は,SELECT文のWHERE句で選択する条件を指定します。行を並べ替えて抽出する場合は,SELECT文のORDER BY句でソートのキーや並べ替え方法を指定します。
xtrepコマンドでSELECT文のWHERE句,ORDER BY句を記述したファイルの名称を指定します。
例を次に示します。
- (例)
-
受注表から次の行を選択し,並べ替えて反映します。
-
受注量が10以上の行を抽出します。
-
得意先コードの昇順に並べ替えます。
-
抽出する行の選択や並べ替えの例を次の図に示します。
|
|
(4) 行単位インタフェースでの抽出
FIX属性の表から抽出する場合,行単位インタフェースで抽出できます。行単位インタフェースで抽出すると,列ごとに検索するオーバヘッドがなくなるため,処理性能を向上できます。
行単位インタフェースでの抽出は,HiRDBの次のSQLで指定します。
xtrepコマンドでSELECT文の選択式を指定した列名記述ファイルの名称を指定します。
例を次に示します。
- (例)
-
抽出側の受注表を,行単位インタフェースで反映側の受注表に反映します。
抽出側の表と反映側の表とは,形式,表名,列名などすべて同一です。
行単位インタフェースでの抽出例を次の図に示します。
|
|
(5) ナル値の既定値の選択
データの抽出時,抽出したデータがナル値の場合は,HiRDB Dataextractorは抽出したデータにHiRDB Dataextractorのナル値の既定値を設定します。データの反映時は,HiRDB Dataextractorは抽出データとHiRDB Dataextractorのナル値の既定値とを比較して,一致した場合にナル値を設定します。該当する列に非ナル値制約がある場合は,ナル値の既定値をデータとして反映します。
このため,抽出するデータ中にHiRDB Dataextractorのナル値の既定値と同じ値がある場合は,ナル値の既定値を変更する必要があります。ナル値の既定値の変更は,xtrepコマンドの−vオプションのナル値情報ファイルに指定します。
HiRDB Dataextractorのナル値の既定値(−vオプション省略時のナル値の既定値),およびナル値情報ファイルでの指定によって設定されるナル値の既定値については,「表4-11 ナル値の既定値」を参照してください。
例を次に示します。
- (例)
-
文字列データのナル値の既定値を変更します。
-
抽出対象の列CHAR01は,ナル値を既定値のまま使用します。この場合,データに’##…#’があるときは,その値にもナル値が設定されます。
-
抽出対象の列CHAR02は,ナル値の既定値を空白に変更します。この場合,データに空白があるときはその値にもナル値が設定されます。
-
抽出対象の列CHAR03は,ナル値の既定値を定数’FFFF’に変更します。この場合,データに定数で指定した値と同じ値があるときは,その値にもナル値が設定されます。
-
ナル値の既定値の変更例を次の図に示します。
|
|
HiRDB Dataextractorが仮定するナル既定値の省略時仮定値,およびナル値情報ファイルによるナル既定値の指定だけでは,抽出表の実データがナル既定値と同じ場合にナル値として反映されてしまいます。そこで,次のどちらかを実行することで,実データをナル値として反映することを防ぎます。
-
ナル値の既定値の省略仮定値変更
-
抽出データへのナル値判定情報の追加
(a) ナル値の既定値の省略仮定値変更
次に示すデータ型(データとして指定できない範囲の値があるもの)については,HiRDB Dataextractorが仮定するナル既定値の省略時仮定値として,実データとして指定できない範囲の値を設定することによって,実データをナル値として反映することを防ぎます。
-
DECIMAL
-
DATE
-
INTERVAL YEAR TO DAY
-
TIME
-
INTERVAL HOUR TO SECOND
-
TIMESTAMP
なお,その他のデータ型についてはデータとして指定できない値がないため,従来通り運用上存在しない値をナル既定値として設定する必要があります。
(b) 抽出データへのナル値判定情報の追加
ナル既定値を使用しないで,抽出データにナル値を判定するための情報を追加することによって,実データがナル値として反映されることを防ぎます。
なお,抽出データにナル値判定情報を追加した場合のデータ形式はデータベース作成ユティリティ(pdload)の−Wオプション指定時の入力データ形式となります。
(6) 繰返し列の抽出
HiRDB Dataextractorでは,繰返し列を抽出および反映対象にできます。
繰返し列を使用する場合の,次の項目について説明します。
-
繰返し列がある場合の,抽出側と反映側との列の組み合わせ
-
繰返し列のデータ形式およびナル値反映方法の指定
-
データ形式およびナル値反映方法の指定時の注意事項
-
繰返し列のファイル出力時のデータ形式
(a) 繰返し列がある場合の,抽出側と反映側との列の組み合わせ
繰返し列がある場合の,抽出側と反映側との列の組み合わせの可否を,次の表に示します。
|
抽出側の列 |
反映側の列 |
要素数 |
対応 |
||
|---|---|---|---|---|---|
|
繰返し列以外 |
繰返し列以外 |
− |
○ |
||
|
繰返し列 |
全要素 |
− |
× |
||
|
特定要素 |
− |
− |
|||
|
繰返し列 |
全要素 |
繰返し列以外 |
− |
× |
|
|
繰返し列 |
全要素 |
抽出側=反映側 |
○ |
||
|
抽出側<反映側 |
× |
||||
|
抽出側>反映側 |
× |
||||
|
特定要素 |
− |
− |
|||
|
特定要素 |
繰返し列以外 |
− |
○ |
||
|
繰返し列 |
全要素 |
− |
× |
||
|
特定要素 |
− |
− |
|||
- (凡例)
-
要素数:繰返し列の要素の数を示します。
対応:HiRDB Dataextractorのとる処置を示します。
○:正常に処理します。
×:処理を終了します。
−:該当しません。
(b) 繰返し列のデータ形式およびナル値反映方法の指定
繰返し列を使用する場合,次の指定によって,繰返し列をファイルに出力するときのデータ形式およびナル値反映方法を指定できます。
-
環境変数XTARRAY
-
ナル値情報ファイル(xtrepコマンドの−vオプションで指定)
環境変数XTARRAYは,表単位にデータ形式,ナル値反映方法について設定する場合に指定します。列単位に設定する場合には,xtrepコマンドの−vオプションに指定するナル値情報ファイルで指定します。環境変数XTARRAYと,ナル値情報ファイルでの指定とを同時に指定した場合には,ナル値情報ファイルでの指定が優先されます。環境変数XTARRAYを省略した場合は,VVおよびCが仮定されます。
また,環境変数XTNLDFLTに2を指定した場合,HiRDB反映またはバイナリ形式のファイル作成時は,この環境変数の指定は無視され,VVおよびCとして処理されます。
- データ形式
-
繰返し列をファイルに出力する場合の,データの形式を指定します。
FF:列の先頭に要素数がなく,列の要素すべてにデータがある形式
FV:列の先頭に要素数があり,列の要素すべてにデータがある形式
VV:列の先頭に要素数があり,要素数分のデータがある形式
- ナル値反映方法
-
繰返し列をHiRDBの表に反映する場合の,要素すべてがナル値のときのナル値の反映方法を指定します。ナル値反映方法は,HiRDBの表に反映する場合で,データ形式にFFを指定するときにだけ指定できます。
C:要素全体にデータがないとき,列全体をナル値として反映します。
E:要素全体にデータがないとき,各要素をナル値として反映します。
繰返し列のデータ形式とナル値反映方法の指定できる組み合わせを,次の表に示します。
|
実行する機能 |
指定値 |
指定可否 |
||
|---|---|---|---|---|
|
データ形式 |
ナル値反映方法 |
|||
|
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) データ形式およびナル値反映方法の指定時の注意事項
データ形式およびナル値反映方法の指定時の注意事項を次に示します。
-
繰返し列以外に対して,データ形式およびナル値反映方法を指定することはできません。
-
DAT形式のファイルを作成する場合には,データ形式にFVは指定できません。
-
対象の表に可変長文字列を含む場合は,データ形式にFF,FVは指定できません。
-
ファイルだけを作成する場合は,ナル値反映方法は指定できません。
-
データ形式にFFを指定してナル値反映方法を指定した場合,ナル値を抽出したときに,HiRDBの表への反映時にナル値反映方法の指定値に統一されます。このために,列全体のナル値と要素全体のナル値の区別がつかなくなり,抽出側のデータと反映側のデータの状態が変わってしまうことがあるので注意が必要です。
- (例)
-
同一のHiRDBシステムで,HiRDB DataextractorとHiRDB Datareplicatorを同時に使用している場合で,次の条件を満たしたときは,HiRDB Datareplicatorが反映処理時にエラーになります。
-
HiRDB Dataextractorで,データ形式にFF,ナル値反映方法にEを指定して,抽出側の列全体のナル値を要素全体のナル値として反映する。
-
1.のレコードに対して,UAPから更新(要素の追加)があり,それをHiRDB Datareplicatorで反映する。
-
(d) 繰返し列のファイル出力時のデータ形式
HiRDBの表への反映時の繰返し列のデータ形式(バイナリ形式)を,「表3-3 HiRDBの表への反映時の繰返し列のデータ形式(バイナリ形式)」に示します。
バイナリ形式のファイル作成時の繰返し列のデータ形式を,「表3-4 バイナリ形式のファイル作成時の繰返し列のデータ形式」に示します。
DAT形式のファイル作成時の繰返し列のデータ形式を,「表3-5 DAT形式のファイル作成時の繰返し列のデータ形式」に示します。
環境変数XTNLDFLTに2を指定した場合のHiRDBの表への反映時およびバイナリ形式のファイル作成時の繰返し列のデータ形式を,「表3-6 環境変数XTNLDFLTに2を指定した場合のHiRDBの表への反映時およびバイナリ形式のファイル作成時の繰返し列のデータ形式」に示します。
|
抽出データ |
繰返し列に対する指定値 |
出力データの内容※ |
反映データ |
|||||||
|---|---|---|---|---|---|---|---|---|---|---|
|
データ形式 |
ナル値反映方式 |
|||||||||
|
要素あり |
すべてあり |
FF |
− |
要素1 |
… |
要素N |
すべてあり |
|||
|
FV |
− |
N |
要素1 |
… |
要素N |
|||||
|
VV |
− |
N |
要素1 |
… |
要素N |
|||||
|
途中まであり |
FF |
− |
要素1 |
… |
要素n |
… |
ナル値N |
途中まであり |
||
|
FV |
− |
n |
要素1 |
… |
要素n |
… |
ナル値N |
|||
|
VV |
− |
n |
要素1 |
… |
要素n |
|||||
|
すべての要素なし |
列全体ナル値 |
FF |
指定なし |
ナル値1 |
… |
ナル値N |
列全体ナル値 |
|||
|
C |
ナル値1 |
… |
ナル値N |
|||||||
|
E |
ナル値1 |
… |
ナル値N |
各要素ナル値 |
||||||
|
FV |
− |
0 |
ナル値1 |
… |
ナル値N |
列全体ナル値 |
||||
|
VV |
− |
0 |
||||||||
|
全要素ナル値 |
FF |
指定なし |
ナル値1 |
… |
ナル値N |
列全体ナル値 |
||||
|
C |
ナル値1 |
… |
ナル値N |
|||||||
|
E |
ナル値1 |
… |
ナル値N |
各要素ナル値 |
||||||
|
FV |
− |
N |
ナル値1 |
… |
ナル値N |
各要素ナル値 |
||||
|
VV |
− |
N |
ナル値1 |
… |
ナル値N |
|||||
- (凡例)
-
−:該当しません。
N:最大要素数
n:実要素数
要素x:x番目の要素を示します。
ナル値x:x番目のナル値を示します。
- 注※
-
出力データ中に設定される各要素の内容を,左から順番に示します。空欄は,要素がないことを示します。
表3‒4 バイナリ形式のファイル作成時の繰返し列のデータ形式 抽出データ
繰返し列に対する指定値
出力データの内容※
データ形式
ナル値反映方式
要素あり
すべてあり
FF
−
要素1
…
要素N
FV
−
N
要素1
…
要素N
VV
−
N
要素1
…
要素N
途中まであり
FF
−
要素1
…
要素n
…
ナル値N
FV
−
n
要素1
…
要素n
…
ナル値N
VV
−
n
要素1
…
要素n
すべての要素なし
列全体ナル値
FF
−
ナル値1
…
ナル値N
FV
−
0
ナル値1
…
ナル値N
VV
−
0
全要素ナル値
FF
−
ナル値1
…
ナル値N
FV
−
N
ナル値1
…
ナル値N
VV
−
N
ナル値1
…
ナル値N
- (凡例)
-
−:該当しません。
N:最大要素数
n:実要素数
要素x:x番目の要素を示します。
ナル値x:x番目のナル値を示します。
- 注※
-
出力データ中に設定される各要素の内容を,左から順番に示します。空欄は,要素がないことを示します。
表3‒5 DAT形式のファイル作成時の繰返し列のデータ形式 抽出データ
繰返し列に対する指定値
出力データの内容※
備考
データ形式
ナル値反映方式
要素あり
すべてあり
FF
−
要素1,…,要素N
コンマ数=N−1
FV
−
−
指定不可
VV
−
N,要素1,…,要素N
コンマ数=N
途中まであり
FF
−
要素1,…,要素n,…,
コンマ数=N−1
FV
−
−
指定不可
VV
−
n,要素1,…,要素n
コンマ数=n
すべての要素なし
列全体ナル値
FF
−
,…,
コンマ数=N−1
FV
−
−
指定不可
VV
−
0
コンマ数=0
全要素ナル値
FF
−
,…,
コンマ数=N−1
FV
−
−
指定不可
VV
−
N,…,
コンマ数=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」を参照してください。
ここでは,SGMLTEXT型のデータの抽出方法について説明します。
(i)環境変数の設定
SGMLTEXT型のデータを抽出するためには,次の環境変数の指定が必要です。
-
環境変数XTLOBBUFSIZEの指定
SGMLTEXT型のBLOB属性の列の,実データの最大長を指定します。
実データの最大長は,xtrepコマンドを使用して求められます。
列名記述ファイルに,抽象データ型関数extractsを使用して,抽出対象のSGMLTEXT型の列の最大長を求めるための選択式を記述し,xtrepコマンドを実行します。これによって求められた値を,環境変数XTLOBBUFSIZEに設定します。
-
環境変数XTERRLEVELでの1の指定
エラー発生時に,処理を中止することを指定します。
(ii)xtrepコマンドでの指定
SGMLTEXT型のデータを抽出するためには,xtrepコマンドに次の指定が必要です。
-
−sオプションでの列名記述ファイルの指定
列名記述ファイルに,抽象データ型関数のextractsを使用して抽出対象のSGMLTEXT型の列,およびその他の抽出対象列を指定し,xtrepコマンドを実行します。実行例については,「4.4.1(2)(f)例6」を参照してください。
(iii)注意事項
-
SGMLTEXT型のデータを抽出する場合は,次の条件を満たしている必要があります。
-
抽象データ型の定義(型名,属性数,属性データ型など)が,抽出側と反映側で一致している。
-
コンストラクタ関数名が抽象データ型名と一致している。
-
HiRDBプラグインの抽象データ型に対する固有の定義(SGMLTEXT型のときは,文書型定義)が,抽出側と反映側で一致している。
-
-
ファイルだけを作成する場合,SGMLTEXT型のBLOB属性の列のLOBデータが,LOBデータ単位にLOB入力ファイルとして作成され,LOB入力ファイル格納用ディレクトリ下に格納されます。ただし,反映情報ファイルにSGMLTEXT型を指定することで,このLOBデータを入力ファイルに格納できます。
(b) XML型の列の抽出
XML型では,原文書をBINARY属性で定義しています。HiRDB Dataextractorは,この原文書を抽出します。
XML型については,マニュアル「HiRDB システム導入・設計ガイド」を参照してください。
ここでは,XML型のデータの抽出方法について説明します。
(i)環境変数の設定
XML型のデータを抽出するためには,次の環境変数の指定が必要です。
-
環境変数XTLOBBUFSIZEの指定
XML型のBINARY属性の列の,実データの最大長を指定します。
実データの最大長は,xtrepコマンドを使用して求められます。
列名記述ファイルに,抽象データ型関数extractsを使用して,抽出対象のXML型の列の最大長を求めるための選択式を記述し,xtrepコマンドを実行します。これによって求められた値を,環境変数XTLOBBUFSIZEに設定します。
-
環境変数XTERRLEVELでの1の指定
エラー発生時に,処理を中止することを指定します。
(ii)xtrepコマンドでの指定
XML型のデータを抽出するためには,xtrepコマンドに次の指定が必要です。
-
−sオプションでの列名記述ファイルの指定
列名記述ファイルに,抽象データ型関数のextractsを使用して抽出対象のXML型の列,およびその他の抽出対象列を指定し,xtrepコマンドを実行します。
(iii)注意事項
-
XML型のデータを抽出する場合は,次の条件を満たしている必要があります。
-
抽象データ型の定義(型名,属性数,属性データ型など)が,抽出側と反映側で一致している。
-
コンストラクタ関数名が抽象データ型名と一致している。
-
HiRDBプラグインの抽象データ型に対する固有の定義(XML型のときは,文書型定義)が,抽出側と反映側で一致している。
-
-
ファイルだけを作成する場合,XML型のBINARY属性の列のLOBデータが,LOBデータ単位にLOB入力ファイルとして作成され,LOB入力ファイル格納用ディレクトリ下に格納されます。ただし,反映情報ファイルにXML型を指定することで,このLOBデータを入力ファイルに格納できます。
(c) FREEWORD型の列の抽出
FREEWORD型では,原文書をVARCHAR属性で定義しています。HiRDB Dataextractorは,この原文書を抽出します。
FREEWORD型については,マニュアル「HiRDB 全文検索プラグイン HiRDB Text Search Plug-in」を参照してください。
ここでは,FREEWORD型のデータの抽出方法について説明します。
(i)xtrepコマンドでの指定
FREEWORD型のデータを抽出するためには,xtrepコマンドに次の指定が必要です。
-
−sオプションでの列名記述ファイルの指定
列名記述ファイルに,抽象データ型関数のextractsを使用して抽出対象のFREEWORD型の列,およびその他の抽出対象列を指定し,xtrepコマンドを実行します。
(ii)注意事項
FREEWORD型のデータを抽出する場合は,次の条件を満たしている必要があります。
-
抽象データ型の定義(型名,属性数,属性データ型など)が,抽出側と反映側で一致している。
-
コンストラクタ関数名が抽象データ型名と一致している。
-
HiRDBプラグインの抽象データ型に対する固有の定義(FREEWORD型のときは,文字列型定義)が,抽出側と反映側で一致している。