5.4.4 source文入力データファイルの情報の記述

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

<適用基準>
LOB列がある表のLOB列にだけデータロードするとき以外は,必ず指定します。
<規則>
source文は必ず1行で記述してください(1行の長さは1023バイト以内)。また,source文は制御情報ファイルの中に一つだけ指定できます。
<この項の構成>
(1) 形式
(2) 説明

(1) 形式

 source 〔RDエリア名〕 〔{サーバ名|ホスト名}:〕

     {入力デ-タファイル名〔,入力デ-タファイル名〕…|(uoc)}

     〔error=エラー情報ファイル名〕

     〔errdata=エラーデータファイル名〔,出力行数〕〕

     〔errwork=エラーデータファイル作成用バッファサイズ〕

     〔maxreclen=入力データ長〕

     〔EasyMT情報〕

     〔validate 符号 {日付|日数}〕

(2) 説明

(a) RDエリア名

   ~<識別子>((1~30))

横分割表に対して,RDエリア単位にデータロードをする場合,データロードをするRDエリアの名称を指定します。

<規則>
  1. キーレンジ分割,又はFIXハッシュ分割の横分割表の場合,該当するRDエリアに格納するデータかどうかをHiRDBがチェックし,格納範囲不正のときはエラーとします。ただし,フレキシブルハッシュ分割の横分割表の場合,該当するRDエリアに格納するデータかどうかはチェックしないで,そのままデータを格納します。
  2. RDエリア名を引用符('')で囲んだ場合は,英大文字と英小文字が区別されます。引用符で囲まない場合は,すべて英大文字として扱われます。また,RDエリア名に空白が含まれる場合は,引用符で囲んでください。
  3. レプリカRDエリアを指定する場合,RDエリア名にはオリジナルRDエリア名を指定し,-qオプションに対象となる世代番号を指定します。
(b) {サーバ名|ホスト名}:

入力データファイルがあるサーバ名,又はホスト名を指定します。

サーバ名 ~<識別子>((1~8))
【HiRDB/シングルサーバの場合】
HiRDB/シングルサーバの場合は指定しないでください。
【HiRDB/パラレルサーバの場合】
入力データファイルがあるフロントエンドサーバ,又はバックエンドサーバの名称を指定します。監査証跡表にデータロードする場合は,監査証跡ファイルがあるユニットの任意のサーバ名称を指定します。なお,影響分散スタンバイレス型系切り替えを適用している場合,サーバ名にゲストBES(切り替え対象サーバ)を指定すると,正規ユニット(そのサーバが実行系として動作しているユニット)に入力データファイルがあるものとして動作します。
RDエリア名を指定した場合は省略できます。省略した場合,指定したRDエリアのあるサーバ名が仮定されます。RDエリア名を省略した場合は,必ず指定してください。
ホスト名 ~<識別子>((1~32))
【HiRDB/シングルサーバの場合】
入力データファイルがあるホストの名称を指定します。シングルサーバがあるホスト名,又はユティリティ専用ユニットのホスト名を指定してください。
RDエリア名の指定に関係なく省略できます。省略した場合,データベース作成ユティリティ(pdloadコマンド)を入力したホスト名が仮定されます。なお,系切り替え機能を使用している場合は,現用系のホスト名を指定してください。
【HiRDB/パラレルサーバの場合】
HiRDB/パラレルサーバの場合は指定しないでください。
(c) 入力データファイル名

   ~<パス名>

入力データが入っている入力データファイルの名称を絶対パス名で指定します。

入力データファイルが複数ある場合は,コンマ(,)で区切って指定できます。入力データファイルについては,「5.5 入力データファイル」を参照してください。

【HiRDB/シングルサーバの場合】
シングルサーバがあるサーバマシン,又はユティリティ専用ユニットのサーバマシンに作成してください。
【HiRDB/パラレルサーバの場合】
フロントエンドサーバ,又はバックエンドサーバに作成してください。
<規則>
  1. EasyMTの場合は,入力データファイルは二つまでしか指定できません。
  2. MTguideを使用する場合は,パス名の代わりにMTguideが管理する装置記号名,又は装置グループ名を指定できます。
  3. 指定した入力データファイルに対して,データロード処理をする前にアクセス可否のチェックをします。この場合,アクセス不可のときにはデータロード処理は実行されません。
  4. BOM(Byte Order Mark)を持つファイルは,入力データファイルとして使用できません。pdloadではBOMなしファイルを使用してください。
  5. 入力データファイルの入出力処理で使用するバッファサイズは,システム定義のpd_utl_file_buff_sizeオペランドで変更できます。
(d) uoc

UOCを使用する場合,入力デ-タファイルの入出力をUOC側でするときに指定します。なお,監査証跡表にデータロードする場合,システムが提供するUOCを使用するため,このオペランドを指定してください。

ユーザが作成するUOCについては,「5.10 UOCを利用したデータロード」を参照してください。

(e) error=エラー情報ファイル名

   ~<パス名>

エラー情報を出力するファイルの名称を絶対パス名で指定します。

入力データファイルがあるサーバのファイル名を指定してください。指定したファイルが存在しない場合,指定したファイル名でユティリティがファイルを作成するため,事前にファイルを作成しておく必要はありません。なお,errorオペランドを省略すると,次に示す形式でユティリティがユニークな名称のファイルを作成します。

/ディレクトリ名/ERROR-xxxxxxxxx

ディレクトリ名:表5-58に示すディレクトリ
ERROR-:エラー情報ファイルのプリフィクス
xxxxxxxx:ファイル作成時間とプロセスIDを文字列に変換した値

ユティリティが作成したファイルの名称は,KFPL00709-Iメッセージに出力されます。

また,-eオプションを指定している場合は,入力データにエラーがあるときだけエラー情報ファイルが作成されます。

(f) errdata=エラーデータファイル名〔,出力行数〕

入力データがエラーとなった場合,そのエラーとなった行データを出力するときに指定します。

エラーデータファイルに出力された行データを修正すれば,再度入力データファイルとしてデータロードできます。

-eオプションを指定した場合は,エラーデータファイルを指定しても無効となります。

エラーデータファイル名 ~<パス名>
エラーとなった行データを出力するファイルの名称を絶対パス名で指定します。
このファイルは,入力データファイルと同じサーバマシンに作成する必要があります。省略した場合,エラーの行データは出力されません。
出力行数 ~<符号なし整数>((1~4294967295))《100》
エラーとなった行データの最大出力行数を指定します。
エラーの行データが,ここで指定した行数より多い場合でも処理は続行されます。ただし,指定した行数までしかエラーの行データは出力されません。
<規則>
  1. エラーデータファイルの出力結果には,次の制限があります。
    <DAT形式の入力デ-タファイルの場合>
    maxreclenオペランドの指定値よりデータ長が大きい場合は出力対象となりません。
    maxreclenオペランドを省略した場合,32キロバイト以上のデータがあるときは,出力対象となりません。
    <バイナリ形式の入力デ-タファイルの場合>
    可変長文字列データの長さ部が不正なために1行に編集できなかったデータは,編集された途中までしか出力されません。また,固定長の列データが定義長に満たない場合は,出力対象となりません。
    <列単位LOB入力ファイルを使用した場合>
    エラーデータファイルには,エラーとなった入力データファイル中の行データだけが出力されます。そのため,入力データファイルを修正して再度データロードする場合,列単位LOB入力ファイルを入力データファイルの出力順序に合わせて修正する必要があります。
  2. インデクスキー値の重複エラーの場合,次の条件のときはエラーであってもエラーデータファイル出力の対象とはなりません。
    • インデクス一括作成モードの場合
    • HiRDB/シングルサーバの場合,インデクス更新モードで,かつユティリティ専用ユニットに入力デ-タファイルがあるとき。HiRDB/パラレルサーバの場合,インデクス更新モードで,かつ表格納用RDエリアがあるサーバとは別のサーバに入力デ-タファイルがあり,エラーデータファイル作成用のバッファが不足したとき。
  3. LOB列にデータロードする場合,及びpdrorg出力バイナリ形式の入力デ-タファイルを使用する場合は,エラーデ-タファイル出力の対象とはなりません。
  4. バイナリ形式の入力デ-タファイルに可変長文字列がある場合,その可変長文字列にエラーがあっても,エラーの列の直前までしか出力対象となりません。エラーデ-タファイルを参照する場合には注意してください。
(g) errwork=エラーデータファイル作成用バッファサイズ

   ~((0~2097152))

errdataオペランド指定時に,エラーデータファイル作成用のバッファサイズをキロバイト単位で指定します。

このオペランドは,errdataオペランドを指定してデータロードしたときにKFPL25222-Wメッセージが出力され,一部のエラーデータがエラーデータファイルに出力されなかった表に対して,再度データロードする場合に指定します。

なお,errworkオペランドに0を指定すると,キー重複エラー及び抽象データ型列への値不正エラーは出力されませんが,データロードの実行性能は良くなります。

KFPL25222-Wメッセージが出力されるのは,次の三つの条件をすべて満たす場合です。

  1. HiRDB/パラレルサーバでsource文に指定したサーバ名と表格納RDエリアが定義されているバックエンドサーバ名が異なる場合,HiRDB/パラレルサーバで複数のバックエンドサーバに横分割されている表の場合,又はHiRDB/シングルサーバでユティリティ専用ユニットを使用する場合。
  2. データロード対象の表に,ユニークキーインデクス又は主キーインデクスが定義されている場合,又は抽象データ型の列がある場合。
  3. 次のどれかに該当する場合
    • 入力データファイル中にデータベースに格納しないデータ(列構成情報ファイルでskipdata文を指定したデータ,列定義長よりも長いデータ,ナル比較値と一致してナル値となるデータ)がある場合
    • VARCHAR,NVARCHAR,MVARCHAR,BINARY,又はLOB列へのデータの格納の場合
    • コンストラクタ関数への入力パラメタ型が,VARCHAR,NVARCHAR,MVARCHAR,BINARY,又はLOBの抽象データ型へデータを格納する場合
<見積もり式>
エラーデータファイル作成用バッファサイズの見積もり式を次に示します。見積もり式の単位はバイトなので,指定するときはキロバイトに補正(端数切り上げ)してください。

バッファサイズ={↑X÷(データベース格納平均行長+Y)↑}
         ×入力データ平均行長×2×
         表格納用RDエリアが定義されているサーバ数

  X:システム共通定義pd_utl_buff_sizeの指定値×1024
  Y:FIX表の場合…24
    非FIX表の場合…(列数+1)×4+24

データベース格納平均行長(表の格納ページ数の計算方法)については,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。
なお,上記見積もり式は行長の平均値で計算しているので,行データの並びによってはバッファが不足することがあります。メモリに余裕がある場合は,見積もり式の値を次の値に変更することで,確実にエラーデータファイルに出力できます。
  • 非FIX表の場合,データベース格納平均行長を0にします。
  • 入力データ平均行長を,入力データの最大長にします。
(h) maxreclen=入力データ長

入力データファイルがDAT形式,拡張DAT形式,バイナリ形式,及びpdrorg出力バイナリ形式の場合に指定できます。固定長データ形式の場合,及びストリーミングテープ装置を使用する場合にこのオペランドを指定しても無視されます。

入力データファイルがDAT形式又は拡張DAT形式の場合 ~<符号なし整数>((0,32~524288))≪32≫
入力データファイルがDAT形式の場合で,1行のデータ長が32キロバイトを超えるとき,入力データファイル中の1行の最大データ長をキロバイトで指定します。
このオペランドを省略した場合に1行のデータ長が32キロバイト以上のデータがあるとき,又はオペランドの指定値よりも長いデータがあると,処理を打ち切ります。
<規則>
  1. このオペランドを省略する場合,又はストリーミングテープ装置を使用する場合は,入力データファイル(DAT形式)の1行のデータ長は32キロバイト以下でなければなりません。
  2. pdrorgで-W datオプションを指定して出力したDAT形式のアンロードデータファイルを使用する場合は,KFPL22222-Iメッセージに最大長が表示されます。
  3. このオペランドに0を指定すると,pdloadが次の基準で処理対象の表の定義から,行長を計算します。なお,計算値は表定義を利用しているため,入力データ中に表に格納しないデータがある場合や,拡張DAT形式で囲み文字(")が二重に出力される場合には,計算値が入力データ長と一致しなくなるのでエラーとなります。この場合,入力データ長には0以外の値を指定してください。
    データ型,又はパラメタ型計算値(単位:バイト)計算値の算出式
    INTEGER12符号+けた数+セパレータ文字
    SMALLINT7符号+けた数+セパレータ文字
    DECIMAL(m,n)m+3符号+けた数+小数点+セパレータ文字
    FLOAT24符号+可数部+小数点+e+符号+指数部+セパレータ文字
    SMALLFLT17符号+可数部+小数点+e+符号+指数部+セパレータ文字
    DATE11指定形式+セパレータ文字
    TIME9指定形式+セパレータ文字
    INTERVAL YEAR TO DAY11符号+けた数+コンマ+セパレータ文字
    INTERVAL HOUR TO SECOND9符号+けた数+コンマ+セパレータ文字
    TIMESTAMP(p)19+(p+1)+1指定形式+セパレータ文字
    CHAR(n),MCHAR(n),VARCHAR(n),又はMVARCHAR(n)n+3文字数+引用符+セパレータ文字
    NCHAR(n),又はNVARCHAR(n)(n×2)+3文字数+引用符+セパレータ文字
    BINARY(n)n+3データ数+引用符+セパレータ文字
    BLOB1025パス名最大値+セパレータ文字
入力データファイルがバイナリ形式又はpdrorg出力バイナリ形式の場合 ~<符号なし整数>((0,32~2097152))≪0≫
BINARY列がある表にデータロードする場合,入力データ中の行の長さの最大長をキロバイト単位で指定します。BINARY列がない表にデータロードする場合にこのオペランドを指定しても無視されます。
<規則>
  1. このオペランドを省略,又は0を指定した場合,pdloadが表の定義から最大行長を算出し,その値を使用して処理します。ただし,入力データ長を指定した場合でも,pdloadが表の定義から算出した値の方が小さければ,算出した値を使用して処理します。
  2. pdloadが表の定義から算出する最大行長より,実際の最大データ長が小さい場合,確保する領域を最小限にするためにこのオペランドを指定します。
(i) EasyMT情報
〔file=ファイル名〕
〔{,vol=ボリューム名|,vol=(ボリューム名〔,ボリューム名〕…)}〕
〔,bufno=バッファ面数〕〔,fileno=ファイル順序番号〕

入力データファイルがEasyMTの場合に指定します。

ファイル名,及びボリューム名を指定すると,入力するファイル及びボリュームの名称が,ここで指定した名称と一致しているかどうかチェックできます。ファイル名及びボリューム名のチェックをしない場合には,省略できます。

ファイル名を省略する場合は,先頭になった項目のコンマ(,)は指定しないでください。

file=ファイル名 ~<英数字>((1~17))
ファイルの名称を指定します。
〔{,vol=ボリューム名|,vol=(ボリューム名〔,ボリューム名〕…)}〕
   ~<英数字>((1~6))
ファイルのボリューム名を指定します。ボリューム名は1行で記述できる範囲で255個まで指定できます。
bufno=バッファ面数 ~<符号なし整数>((1~256))《10》
EasyMTで使用するバッファの面数を指定します。
fileno=ファイル順序番号 ~<符号なし整数>((1~9999))
MT内のデータファイルの位置を指定します。省略した場合は,次の位置からファイルを読み込みます。
(j) validate 符号 {日付|日数}

入力データファイルがEasyMTの場合に,読み込みを許可する入力データファイルの作成日付,又は日数を指定します。

なお,このオペランドは,HP-UX (IPF)版,Solaris版,及びLinux版の場合,使用できません。

MTラベルに西暦(YYYY年)と通算日(DDD日)で作成日付が入っていない場合は,このオペランドは指定できません。また,日付チェックの範囲が1970年以前や2037年以降となるような指定はできません。

符号
日付又は日数のどちらを指定するかによって異なります。
日付の場合:
符号には,=又は>を指定します。
=:
入力データファイルの作成日付が指定日付と一致しない場合,処理を打ち切ります。
>:
入力データファイルの作成日付が指定日付より前の場合は,処理を打ち切ります。
日数の場合:
符号には=を指定します。
日付
日付にはYYYY-MM-DDの形式で,年月日を指定してください。
日数
日数には0又は正の数を指定してください。
0 :
入力データファイルの作成日付が,pdload起動日と一致しない場合,処理を打ち切ります。
正の数:
入力データファイルの作成日付が,pdload起動日から指定日数より前の場合は,処理を打ち切ります。
<例>
validateの指定値とMT作成日付の関連による実行状況の例を示します。これは,pdloadを1996年2月14日に起動した場合の例です。
指定例MT作成日付
1996-02-121996-02-131996-02-14
validate=1996-02-13××
validate>1996-02-13××
validate=1×
(凡例)
○:データロード実行
×:データロード打ち切り