4.2.3 データ抽出・反映の付加機能
(1) データ抽出時のSQLユーザ指定機能
HiRDB Dataextractorでは,HiRDBからデータを抽出する際に発行する次のSQLに対して,ユーザ任意の指定を行うことができます。
この機能の適用範囲を次の表に示します。
表4-4 データ抽出時のSQLユーザ指定機能の適用範囲
データ連携種別 | 抽出側 | 反映側 | 適用可否 |
---|
XDM/XT連携 | XDM/RD | HiRDB | - |
順編成データセット | - |
HiRDB | XDM/RD | ○ |
順編成データセット | ○ |
HiRDB Dataextractor連携 | HiRDB | HiRDB | ○ |
バイナリ形式ファイル | ○ |
DAT形式ファイル | ○ |
- (凡例)
- ○:適用できます。
- -:HiRDB Dataextractorでは対象外です。詳細は,マニュアル「VOS3 データベース抽出プログラム XDM/XT」を参照してください。
(a) XDM/XT連携での使用方法
XDM/XT連携でこの機能を使用する場合,指定が必要なものは次のとおりです。
- XDM/XTのJXUMCTL制御文
RDBDEF文,EXTRACT文
- HiRDB Dataextractorの環境変数情報設定ファイル(抽出側)
環境変数情報設定ファイルに指定する環境変数を次の表に示します。
表4-5 SQLユーザ指定機能で設定する環境変数(XDM/XT連携の場合)
環境変数 | 環境変数の指定 |
---|
PDHOST | △※ |
PDNAMEPORT | △※ |
XTEXTRACTDB | △ |
XTLCKxxxx | △ |
XTTBLxxxx | △ |
XTCLMxxxx | △ |
XTWHExxxx | △ |
- (凡例)
- △:必要に応じて指定します。
- 注※
- XDM/XTのJXUMCTL制御文にRDBDEF文を指定した場合は必ず指定します。
各環境変数の詳細については,「2.2.3 環境変数の設定」を参照してください。
(b) HiRDB Dataextractor連携での使用方法
HiRDB Dataextractor連携でこの機能を使用する場合,xtrepコマンドを実行します。
●環境変数
この機能を使用する場合,抽出側に次の環境変数を必ず指定します。
環境変数の詳細については,「2.2.3 環境変数の設定」を参照してください。
●コマンドオプション
この機能で指定が必要,不要となるオプションを次の表に示します。
表4-6 データ抽出時のSQLユーザ指定機能使用時のxtrepコマンドオプションの指定
コマンド | オプション | 指定値 | HiRDB反映 | バイナリ,DATファイル作成 |
---|
XTSQL | XTSQL |
---|
0 | 1 | 0 | 1 |
---|
xtrep | -g | - | △ | ○ | △ | ○ |
排他情報ファイル |
-r | 〔認可識別子,〕表識別子 | △ | ○ | × | × |
-R | - | × | × | ○ | ○ |
{bin|dat} |
-s | 列名記述ファイル名 | △ | △ | △ | △ |
-w | 表式記述ファイル名 | △ | × | △ | × |
〔認可識別子,〕表識別子 | - | ○ | × | ○ | × |
表式記述ファイル名 | - | × | ○ | × | ○ |
- (凡例)
- ○:必ず指定してください。
- △:省略できます。
- ×:指定できません。
- -:指定値はありません。
- -g 〔排他情報ファイル名〕
環境変数XTSQLとの組み合わせによってデータを抽出する表の排他制御を行います。環境変数XTSQLに1を指定した場合,このオプションを必ず指定します。
排他情報ファイルの詳細は次のとおりです。
XTSQL | -gオプション | 動作 |
---|
0 | なし | - | コマンドラインの表名でLOCKTABLEを発行 |
あり | 指定値なし | LOCK TABLEを発行しない |
指定値あり | 排他情報ファイルの内容でLOCK TABLEを発行 |
1 | なし | - | エラー |
あり | 指定値なし | LOCK TABLEを発行しない |
指定値あり | 排他情報ファイルの内容でLOCK TABLEを発行 |
- (凡例)
- -:該当しません。
- -r 〔認可識別子,〕表識別子
環境変数XTSQLに1を指定した場合,このオプションまたは-Rオプションを必ず指定します。
- -R 〔{bin|dat}〕
環境変数XTSQLに1を指定した場合,このオプションまたは-rオプションを必ず指定します。
- -s 列名記述ファイル名
必要に応じて列名記述ファイルの名称を絶対パスで指定します。
- -w 表式記述ファイル名
環境変数XTSQLに1を指定した場合,このオプションは指定できません。
- 〔認可識別子,〕表識別子
環境変数XTSQLを省略,または0を指定した場合に指定します。
- 表式記述ファイル名
環境変数XTSQLに1を指定した場合,このオプションを指定します。
各オプションの詳細については,「4.2.2 xtrepコマンド」を参照してください。
●ファイルの指定方法
オプションで指定するファイルの指定方法について説明します。
- 排他情報ファイル
LOCK TABLE文の排他制御オプションを指定します。
環境変数XTSQLの指定によって,次のようにファイル内容を指定します。
XTSQL | 指定内容 |
---|
0 | "LOCK TABLE 表名"以降の排他オプションを指定します。 |
1 | "LOCK TABLE"以降の排他オプションを指定します。 |
- 表式記述ファイル
SELECT文の表式を指定します。
環境変数XTSQLの指定によって,次のようにファイル内容を指定します。
XTSQL | 指定内容 |
---|
0 | SELECT文"FROM 表名"以降の表式を指定します。 |
1 | SELECT文"FROM"以降の表式を指定します。 |
●注意事項
環境変数XTSQLに1を指定した場合,ナル値情報ファイルに列名を指定できません。ナル既定値,繰返し列データ形式などを指定する場合,フィールド番号で指定してください。列名を指定した場合は,エラーになります。
(2) ローダのパラメタユーザ任意指定機能
HiRDB Dataextractorでは,HiRDBへデータを反映する際,HiRDBのデータベース作成ユティリティ(pdload)を起動しています。ローダのパラメタユーザ任意指定機能では,pdloadのパラメタをユーザ任意に指定できます。
この機能の適用範囲を次の表に示します。
表4-7 ローダのパラメタユーザ任意指定機能の適用範囲
データ連携種別 | 抽出側 | 反映側 | 適用可否 |
---|
XDM/XT連携 | XDM/RD | HiRDB | ○ |
順編成データセット | ○ |
HiRDB Dataextractor連携 | HiRDB | HiRDB | ○ |
- (凡例)
- ○:適用できます。
(a) XDM/XT連携での使用方法
XDM/XT連携でこの機能を使用する場合,指定が必要なものは次のとおりです。
- XDM/XTのJXUMCTL制御文
- HIRDDEF文PDLODPRMオペランド
- LOAD文LPRMPATHオペランド,PDSRPATHオペランド
- HiRDB Dataextractorの環境変数情報設定ファイル(反映側)
必要に応じて指定してください。環境変数の詳細については,「2.2.3 環境変数の設定」を参照してください。
(b) HiRDB Dataextractor連携での使用方法
HiRDB Dataextractor連携でこの機能を使用する場合,xtrepコマンドを実行します。
●環境変数
この機能を使用する場合,反映側の環境変数情報設定ファイルに次の環境変数を必要に応じて指定します。
各環境変数の詳細については,「2.2.3 環境変数の設定」を参照してください。
●コマンドオプション
この機能で指定が必要,不要となるオプションを次の表に示します。
表4-8 ローダのパラメタユーザ任意指定機能使用時のxtrepコマンドオプションの指定
コマンド | オプション | 指定値 | 指定要否 |
---|
xtrep | -d | - | 1' |
-f | サーバ名 | △ |
-i | {c|s|n|x} | 1' |
-I | XTPDCFxxxx | △ |
XTLPRMxxxx | ○1 |
XTPDSRxxxx | ○2 |
-j | RDエリア名 | △ |
-l | {a|p|n} | 1' |
-n | バッファ面数 | 1' |
-q | エラーデータファイル名,件数 | 2' |
-v | ナル値情報ファイル | △ |
-z | - | 1' |
- (凡例)
- ○:この機能を使用する場合,どちらかは必ず指定してください。
- △:省略できます。
- -:指定値はありません。
- 1,1':1と1'は同時に指定できません。
- 2,2':2と2'は同時に指定できません。
- ●-I 〔XTPDCFxxxx〕〔,XTLPRMxxxx〕〔,XTPDSRxxxx〕
- 指定値は一つ以上指定します。複数指定する場合は,コンマ(,)で区切り,順不同に指定できます。
- XTPDCFxxxx(pdload制御情報環境変数名)
必要に応じて指定してください。この環境変数の詳細は,「2.2.3 環境変数の設定」を参照してください。
- XTLPRMxxxx(pdloadコマンドライン情報環境変数名)
この機能を使用する場合は,XTLPRMxxxxとXTPDSRxxxxのどちらかの環境変数は必ず指定してください。
- 注意事項
- この環境変数を指定する場合,次のオプションは指定できません。
-dオプション
-iオプション
-lオプション
-nオプション
-zオプション
- この環境変数名を指定する場合,HiRDB Dataextractorはpdload起動時に表名,制御情報ファイル名,-bオプション,-kオプション,-vオプション,-Wオプション,-cオプション以外のパラメタを指定しないため,必要なオプションはすべてpdloadコマンドライン情報ファイルに指定します。
- XTPDSRxxxx(pdload制御情報ファイルsource文情報環境変数名)
この機能を使用する場合は,XTLPRMxxxxとXTPDSRxxxxのどちらかの環境変数は必ず指定してください。
- 注意事項
- この環境変数を指定する場合,-qオプションは指定できません。
(3) 文字コード変換機能
抽出データの文字コードを環境変数の指定に従って,文字コード変換して反映する機能です。
この機能の適用範囲を次の表に示します。
表4-9 文字コード変換機能の適用範囲
データ連携種別 | 抽出側 | 反映側 | 適用可否 |
---|
XDM/XT連携 | XDM/RD | HiRDB | - |
順編成データセット | - |
HiRDB | XDM/RD | - |
順編成データセット | - |
HiRDB Dataextractor連携 | HiRDB | HiRDB | ○ |
バイナリ形式ファイル | ○ |
DAT形式ファイル | ○ |
- (凡例)
- -:HiRDB Dataextractorでは対象外です。詳細は,マニュアル「VOS3 データベース抽出プログラム XDM/XT」を参照してください。
- ○:適用できます。
この機能で変換可能な文字コードについては,「3.1.4 抽出したデータの文字コード変換」を参照してください。
(a) 文字コード変換機能の使用方法
環境変数およびナル値情報ファイルを指定することによって,データ反映時に文字コードが変換されます。
●環境変数
この機能を使用する場合に必要な環境変数について次の表に示します。
表4-10 文字コード変換機能で設定が必要な環境変数
環境変数 | 抽出側 | 反映側 | ファイル作成側 |
---|
XTLOCALE | ○ | ○ | ○ |
XTDATALOCALE | △ | △ | △ |
XTUNDEF | - | ○ | ○ |
XTDATAUNDEF | - | ▲ | ▲ |
- (凡例)
- ○:指定します。
- △:必要に応じて指定します。省略した場合,環境変数XTLOCALEに従います。
- ▲:環境変数XTDATALOCALEを指定した場合,指定します。
- -:指定しません。
- 注
- XTDATALOCALEを指定してUTF-16へ文字コード変換する場合,変換対象は表データだけとなります。表定義情報は変換対象となりません。表定義情報を変換するためには,必ず環境変数XTLOCALEを指定してください。
- XTLOCALE
抽出側と反映側でそれぞれの文字コードを指定します。環境変数の指定値については,「2.2.3 環境変数の設定」を参照してください。
抽出側と反映側の環境変数の指定組み合わせを次に示します。
-
抽出側 | 反映側 |
---|
sjis | euc | utf-8 | unknown |
---|
sjis | - | ○ | ○ | - |
euc | ○ | - | ○ | - |
utf-8 | ○ | ○ | - | - |
unknown | - | - | - | - |
- (凡例)
- ○:抽出側で指定したコードから反映側で指定したコードに変換します。
- -:コード変換しません。
- XTDATALOCALE
抽出側と反映側でそれぞれの文字コードを指定します。この環境変数はUTF-16と,UTF-16以外の文字コード間でデータ連携する場合に指定してください。環境変数の指定値については,「2.2.3 環境変数の設定」を参照してください。
抽出側と反映側の環境変数の指定組み合わせを次に示します。
-
抽出側 | 反映側 |
---|
sjis | euc | utf-8 | utf-16BE | utf-16LE |
---|
sjis | - | ○ | ○ | ○ | ○ |
euc | ○ | - | ○ | ○ | ○ |
utf-8 | ○ | ○ | - | ○ | ○ |
utf-16BE | ○ | ○ | ○ | - | ○ |
utf-16LE | ○ | ○ | ○ | ○ | - |
- (凡例)
- ○:抽出側で指定したコードから反映側で指定したコードに変換します。
- -:コード変換しません。
- XTUNDEF
未定義コードを検出した場合の処置を指定します。この環境変数の指定値については,「2.2.3 環境変数の設定」を参照してください。
- XTDATAUNDEF
未定義コードを検出した場合の処置を指定します。この環境変数は,環境変数XTDATALOCALEを指定した場合に有効となります。この環境変数の指定値については,「2.2.3 環境変数の設定」を参照してください。
●ナル値情報ファイル
列単位にコード変換の有無を指定する場合に,xtrepコマンドの-vオプションの指定値にナル値情報ファイルを指定します。
このファイルの指定方法については,「4.2.4 xtrepコマンドで指定するファイルの内容」を参照してください。
(b) 外字のコード変換
文字コードの外字を変換するには,文字コード変換用マッピングテーブルを使用します。変換に使用されるマッピングテーブルの基のテーブルは,HiRDB Dataextractorインストール時に自動的にインストールされます。ディレクトリ名およびファイル名については,「2.2.2(5)HiRDB Dataextractorが作成するディレクトリおよびファイル」を参照してください。
この基のマッピングテーブルは,初期状態では外字コードが定義されていません。コード変換で外字を扱う場合は,事前に文字コ-ド変換用マッピングテーブルを更新しておく必要があります。
なお,更新を行う場合は,整合性が取れるように,次の2種類のマッピングテーブルをそれぞれ更新してください。
- 抽出側コード体系から反映側コード体系へのマッピングテーブル
- 反映側コード体系から抽出側コード体系へのマッピングテーブル
●文字コード変換用マッピングテーブルの編集・参照
文字コード変換用マッピングテーブルに外字コードを定義する場合,またはテーブル内容を参照する場合は,xtccnvedtコマンドを使用します。
なお,文字コード変換用マッピングテーブルの編集は,HiRDB Dataextractorが動作していない状態で実行してください。
- 機能
- HiRDB Dataextractorインストール時に用意された文字コード変換用マッピングテーブルを基に,新たに次のディレクトリにマッピングテーブルを作成します。
/opt/HIRDBXT/lib/usermap/
- すでに上記ディレクトリ下にマッピングテーブルが存在する場合は,上書きします。
- 実行環境
- スーパーユーザを使用し,データ反映側のマシンで実行してください。
- コマンド
マッピングテーブル更新時
xtccnvedt -w
-f {sjis|euc|ucs2}
-t {sjis|euc|ucs2}
-d 変換定義ファイル名
マッピングテーブル参照時
xtccnvedt -r
-f {sjis|euc|ucs2}
-t {sjis|euc|ucs2}
-o 出力ファイル名
〔-s 出力開始コード〕
〔-e 出力終了コード〕 |
- オプション
- マッピングテーブル更新時
- ●-w
- 文字コード変換用マッピングテーブルを更新する場合に指定します。
- ●-f {sjis|euc|ucs2}
- 変換元のコードセットを指定します。
- sjis:SJIS文字コード
- euc:EUC文字コード
- ucs2:UTF-8,またはUTF-16文字コード
- ●-t {sjis|euc|ucs2}
- 変換先のコードセットを指定します。
- sjis:SJIS文字コード
- euc:EUC文字コード
- ucs2:UTF-8,またはUTF-16文字コード
- ●-d 変換定義ファイル名
- 文字コード変換用マッピングテーブルの更新内容を定義した変換定義ファイル名を127文字以内で指定します。相対パス指定の場合は,カレントディレクトリからの相対パスとして認識します。
-
- マッピングテーブル参照時
- ●-r
- 文字コード変換用マッピングテーブルを参照する場合に指定します。
- ●-o
- 文字コード変換用マッピングテーブルの参照結果を出力するファイル名を127文字以内で指定します。相対パス指定の場合は,カレントディレクトリからの相対パスとして認識します。
- 文字コード変換用マッピングテーブルの参照結果は,変換定義ファイルの定義フォーマットと同様の形式で1バイトコード文字列,2バイトコード文字列,3バイトコード文字列の順に変換元文字コードの昇順に出力します。
- 出力対象は変換先コードが定義されているコードだけとし,変換先が未定義のコードについては出力しません。
- ●-s 出力開始コード
- 参照を開始する変換元文字コードを16進数値文字列で指定します。このオプションを省略した場合は,文字コード変換用マッピングテーブルの先頭から参照を開始します。
- 注意事項
- 出力開始コードは,次のように指定してください。
- 1バイトコードは2文字,2バイトコードは4文字,3バイトコードは6文字(変換元コードがEUC文字コードの場合だけ)で指定します。これ以外の文字数の場合はエラーとなります。
- 3バイトコードを指定する場合,先頭が8f以外のときはエラーとなります。
- -eオプションで指定した出力終了コードよりも大きい値を指定した場合はエラーとなります。
- ●-e 出力終了コード
- 参照を終了する変換元文字コードを16進数値文字列で指定します。このオプションを省略した場合は,文字コード変換用マッピングテーブルの終わりまで参照を行います。
- 注意事項
- 出力終了コードは次のように指定してください。
- 1バイトコードは2文字,2バイトコードは4文字,3バイトコードは6文字(変換元コードがEUC文字コードの場合だけ)で指定します。これ以外の文字数の場合はエラーとなります。
- 3バイトコードを指定する場合,先頭が8f以外のときはエラーとなります。
- -sオプションで指定した出力開始コードよりも小さい値を指定した場合はエラーとなります。
- 注意事項
- オプション-fと-tで指定できるコードセットの組み合わせを次に示します。
-fオプション | -tオプション | 処理対象のマップファイル |
---|
sjis | euc | jis2euc.map |
ucs2※ | jis2ucs2.map |
euc | sjis | euc2jis.map,eucg2j.map |
ucs2※ | euc2ucs2.map,eucg2u.map |
ucs2※ | sjis | ucs22jis.map |
euc | ucs22euc.map |
- 注
- 変換元と変換先に同じコードセットを指定した場合は,文字コード変換用マッピングテーブルの更新は行いません。
- 注※
- 文字コードセットがUTF-8の場合は,UCS-2コードセットを指定してください。
- 変換定義ファイル
- 変換定義ファイルには,文字コード変換用マッピングテーブル中の更新したい変換元文字コードと変換先文字コードを次のフォーマットで定義します。
- 記述規則
- 1行に1エントリで定義します。
- 変換元文字コード,変換先文字コードは16進数値文字列(a~fについては大文字,小文字のどちらの指定も可)で指定します。
- 「#」以降は,コメントとみなされます。変換の定義のあとにコメントを記載する場合は,定義と「#」の間に一つ以上の空白文字またはタブを入れておく必要があります。
- 文字コードの指定は,1バイトコードは2文字,2バイトコードは4文字,3バイトコードは6文字(EUC文字コードの場合だけ)で行います。これ以外の文字数での指定がある場合はエラーとなります。
- 3バイトコードを指定する場合,先頭が8f以外のときはエラーとなります。
- 変換先文字コードの指定以降に出現する最初の空白文字以降は無視します。
- 各コードの前後にある空白文字およびタブは無視します。
(c) コード変換エラー時の処理
コード変換エラー時の処理は,エラー要因によって,次のようになります。
- (i)変換後データ長が受け取りエリアより長くなる場合
- けたあふれしたデータを切り捨てて,設定します。
- (例)
- 抽出側,反映側ともCHAR(3)の列で,データが「あ+ア(半角カナ文字)」であるとき,SJISからEUCへコード変換を行うと,変換後データ長が4バイトとなるため,最後の文字は切り捨てます。
- (ii)抽出データ(列単位)の末尾が2または3バイトコードの途中である場合
- 反映側の属性が固定長のとき
エラーデータの前までのデータを設定し,残りを空白(0x20)にします。
- (例)
- 抽出側,反映側ともCHAR(3)の列で,データが「あ+2バイトコードの先頭」であるとき,SJISからEUCへコード変換を行うと,最後の文字は切り捨て,残りに空白を設定します。
-
- 反映側の属性が可変長のとき
エラーデータの前までのデータを設定します。
- (例)
- 抽出側,反映側ともVARCHAR(3)の列で,データが「あ+2バイトコードの先頭」であるとき,SJISからEUCへコード変換を行うと,最後の文字は切り捨てます。
変換エラーを検知するとエラーメッセージ(JXU7230I)を出力して,エラーを検知した次の列から処理を続行します。変換エラーレコード件数が打ち切り件数に達したときに,エラーメッセージ(JXU7230E)を出力して処理を終了します。