Hitachi

ノンストップデータベース HiRDB Version 10 構造型データベース機能


12.3.2 load文

load文には,入力データをデータベースに格納するときの情報や処理条件を指定します。

なお,load文は,index文と同時に指定できません。

指定形式(データロードの場合)

 load
 
      type = {tree|single}
 
      record = レコード型名
 
    〔server = バックエンドサーバ名〕
 
    〔area = 処理対象のRDエリア名〕
 
      data = 入力データファイル名
 
    〔storinf = 実行結果ファイル名〕
 
    〔errdata ={(論理エラー情報ファイル名〔,出力件数の上限〕)
                 |論理エラー情報ファイル名}〕
 
      prefix = プリフィクス部の長さ
 
    〔idxmode = {create|sync〕
 
    〔seqkeyck = {yes|no}〕
 
    〔dupkeyck = {yes|no}〕

指定形式(フォーマットライトの場合)

 load
 
      write = use
 
      record = レコード型名
 
    〔server = バックエンドサーバ名〕
 
    〔area = 処理対象のRDエリア名〕
 
    〔storinf = 実行結果ファイル名〕
 
    〔idxmode = {create|sync〕
type = {tree|single} 【データロード限定オペランド】

入力データファイルの種類を指定します。

tree:入力データファイルが木構造ファイルの場合に指定します。

single:入力データファイルが単純階層ファイルの場合に指定します。

4V FMBまたはSD FMBのSDBデータベースの場合はtreeを,4V AFMのSDBデータベースの場合はsingleを指定してください。

write = use 【フォーマットライト限定オペランド】

フォーマットライトを実行する場合に指定します。

environment文のpurgeオペランドにnoを指定するか,または省略した場合,このオペランドは指定できません。

record = レコード型名

〜<識別子>((1〜30バイト))

データロードまたはフォーマットライトを実行するレコードのレコード型名を指定します。SDBデータベース定義のRECORD句に指定したレコード型名を指定します。

4V FMBまたはSD FMBのSDBデータベースの場合は,ルートレコードのレコード型名を指定してください。4V AFMのSDBデータベースの場合は,仮想ルートレコードのレコード型名を指定してください。

server = バックエンドサーバ名

〜<識別子>((1〜8バイト))

データロードまたはフォーマットライトの処理対象RDエリアを管理しているバックエンドサーバの名称を指定します。

英大文字と英小文字の指定が区別されます。

このオペランドは,次に示す条件をすべて満たす場合に指定してください。

  • SDBデータベースを横分割している場合

  • BES内の全対象RDエリアに対して,一括でデータロードまたはフォーマットライトを実行する場合

上記の条件を満たさない場合は,このオペランドを省略してもかまいません。

area = 処理対象のRDエリア名

〜<識別子>((1〜30バイト))

SDBデータベースが横分割されている場合,RDエリア単位にデータロードまたはフォーマットライトを実行するときにこのオペランドを指定します。

例えば,次に示すようにSDBデータベースが横分割されている場合,このオペランドにRDAREA01を指定すると,RDAREA01にレコードが格納され,RDAREA03にインデクスが格納されます。

[図データ]

《インナレプリカ機能使用時の注意事項》

レプリカRDエリアに対してデータロードまたはフォーマットライトを実行する場合,このオペランドにはオリジナルRDエリア名を指定してください。そして,environment文のgenerationオペランドに,処理対象RDエリアの世代番号を指定してください。

data = 入力データファイル名 【データロード限定オペランド】

〜<パス名>((1〜1,023バイト))

入力データファイル名を絶対パスで指定します。

入力データファイルは,処理対象RDエリアがあるサーバマシンに格納してください。そのサーバマシンのパス名を指定します。

《注意事項》

このオペランドに指定するファイルを格納するディレクトリの実行権限,読み込み権限,および書き込み権限をHiRDB管理者に対して付与してください。権限がない場合,pdsdblodコマンドがエラーになります。

参考

入力データファイルの入出力時に使用されるバッファ長は,システム定義のpd_utl_file_buff_sizeオペランドの値が適用されます。

storinf = 実行結果ファイル名

〜<パス名>((1〜1,023バイト))

pdsdblodコマンドの処理が完了すると,実行結果が実行結果ファイルに出力されます。このオペランドには,実行結果ファイルの名称を絶対パスで指定します。実行結果ファイルは,処理対象RDエリアがあるサーバマシンに作成されます。

このオペランドを省略した場合,次に示すどれかのディレクトリ下に実行結果ファイルが作成されます(優先順位は1の指定がいちばん上位です)。

  1. システム定義のpd_tmp_directoryオペランドに指定したディレクトリ

  2. 環境変数TMPDIRに指定したディレクトリ

  3. /tmpディレクトリ

実行結果ファイルの名称はSDBLOD-xxxxxxxxxになります。xxxxxxxxxは,ファイル作成時間,プロセスIDなどが含まれた文字列になります。作成されたファイルの名称はKFPB63030-Iメッセージで確認できます。

《注意事項》

  • このオペランドに指定するファイルのディレクトリは事前に作成しておいてください。また,作成したディレクトリの実行権限,読み込み権限,および書き込み権限をHiRDB管理者に対して付与してください。ディレクトリがない場合,または権限がない場合は,pdsdblodコマンドがエラーになります。

  • このオペランドに指定したファイルがすでに存在する場合,そのファイルは上書きされます。

実行結果ファイルに出力される情報については,「12.7 実行結果ファイルの出力形式」を参照してください。

errdata ={(論理エラー情報ファイル名〔,出力件数の上限〕)|論理エラー情報ファイル名} 【データロード限定オペランド】

論理エラー情報の出力先と,出力件数の上限を指定します。このオペランドを省略した場合,論理エラー情報は出力されません。

論理エラー情報ファイル名:

〜<パス名>((1〜1,023バイト))

論理エラー情報ファイル名を絶対パスで指定します。入力データの論理エラーが発生した場合,ここで指定したファイルに論理エラー情報が出力されます。論理エラー情報ファイルは,処理対象のRDエリアがあるサーバマシンに作成されます。

出力件数の上限:

〜<符号なし整数>((1〜4,294,967,295))《100》

論理エラー情報の出力件数の上限を指定します。論理エラー情報の件数が,このオペランドの指定値を超えても処理は継続されますが,論理エラー情報は指定した件数までしか出力されません。

《注意事項》

  • このオペランドに指定するファイルのディレクトリは事前に作成しておいてください。また,作成したディレクトリの実行権限,読み込み権限,および書き込み権限をHiRDB管理者に対して付与してください。ディレクトリがない場合,または権限がない場合は,pdsdblodコマンドがエラーになります。

  • このオペランドに指定したファイルがすでに存在する場合,そのファイルは上書きされます。

prefix = プリフィクス部の長さ 【データロード限定オペランド】

〜<符号なし整数>((0〜32,767))(単位:バイト)

入力データのレコードのプリフィクス部の長さをバイト単位で指定します。プリフィクス部がない場合は0を指定してください。

入力データのプリフィクス部については,「12.6.1(3) プリフィクス部【4V FMB,4V AFM】」で説明されているL1の値を参照して,このオペランドに指定します。

idxmode = {create|sync}

インデクスの作成モードを指定します。

create:インデクス一括作成モードでインデクスを作成します。

sync:インデクス更新モードでインデクスを作成します。

seqkeyck = {yes|no} 【データロード限定オペランド】

シーケンシャルインデクスが定義されているデータベースに対して,キー値の順番をチェックするかどうかを指定します。4V FMBまたはSD FMBのSDBデータベースにデータロードする場合にこのオペランドの指定を検討してください。

yes:

キー値の順番をチェックします。この場合,キー値が順番に並んでいるレコードだけがデータベースに格納されます。キー値が順番に並んでいないレコードは論理エラーとなり,データベースに格納されません。

no:

キー値の順番をチェックしません。この場合,キー値の順番に関係なく,すべてのレコードがデータベースに格納されます。

yesを指定するとキー値の順番が保証されるため,次に示すメリットがあります。

  • 各インデクスページにインデクスキーが均等に配分されるため,インデクスを使用した検索処理時間のばらつきが少なくなります。

  • キー値の順番にレコードがデータページ上に格納されるため,キー順に検索する場合,グローバルバッファのヒット率が向上します。

ただし,yesを指定した場合,順番のチェック処理の分だけ,データロードまたはフォーマットライトの処理時間が長くなります。したがって,キー値の順番が保証されている入力データの場合はnoを指定してください。

《注意事項》

  • シーケンシャルインデクスのデータ型がPACKED DECIMAL FIXEDの場合,DECIMAL型の符号正規化機能を使用しない環境下では,次のチェック条件となります。

    ・符号が0xCと0xFで異なる場合でも同じデータとして扱います。

    ・+0(0x0c)と−0(0x0d)は異なるデータと見なし,+0は−0より大きいデータとして扱います。

  • 4V AFMのSDBデータベースの場合,親レコード型に対する入力データの作成が不要のため,このオペランドの指定に関係なく順番のチェックは行われません。

  • SDBデータベース定義のORDER句にSORTED DUPLICATES PROHIBITEDを指定した子レコード型に対する順番のチェックは,このオペランドの指定に関係なく実施されます。入力データのユーザキーは,KEY句で指定した順序(ASCENDINGは昇順,DESCENDINGは降順)で作成してください。並び順が不正な場合,論理エラーになります。

dupkeyck = {yes|no} 【データロード限定オペランド】

インデクス一括作成モードを指定した場合,入力データファイルのルートレコードに対し,SDBデータベースに格納されているレコードのキー重複チェックをするかどうかを指定します。4V FMBまたはSD FMBのSDBデータベースにデータロードをする場合は,このオペランドの指定を検討してください。

yes:

キー値の重複をチェックします。キー値が重複していないレコードだけがSDBデータベースに格納されます。キー値が重複しているレコードは論理エラーとなり,SDBデータベースに格納されません。

no:

キー値の重複をチェックしません。キー値の重複に関係なく,すべてのレコードがSDBデータベースに格納されます。

yesを指定すると,同じキー値のシーケンシャルインデクスの格納を防げます。ただし,yesを指定した場合,重複チェック処理の分だけ,追加データロードの処理時間が長くなります。したがって,キー値の重複がないことが保証されている入力データの場合は,このオペランドにnoを指定してください。

なお,インデクス一括作成モードのときにこのオペランドにnoを指定した場合,同じインデクスキーであってもチェックされません。この場合,インデクスの一括作成時にキー重複エラーが発生し,インデクス不整合となるため注意してください。

《注意事項》

  • 4V AFMのSDBデータベースの場合,このオペランドの指定は無視されます。

  • 4V FMBまたはSD FMBのSDBデータベースのインデクス更新モードの場合,yesが仮定されます。

  • environment文のpurgeオペランドにyesを指定した場合,noが仮定されます。