DBI (インポート) バッチ・コマンド

目的

QSAM または VSAM ファイルから Db2® オブジェクトに、さまざまな形式でデータをインポートします。Db2® オブジェクトは、現在接続されている Db2® システムからアクセス可能である必要があります。

使用

FM/Db2 インポート・ユーティリティーでは以下のことができます。

  • オプションで、データをインポートする前にターゲット表からすべての行を削除する。
  • インポートするレコードの数を制限する。
  • インポートするレコードを選択する。
  • 適切なデータ・タイプと長さの変換を行い、インポート・データ・セットのフィールドをターゲット表の列にマップする (テンプレート・マッピングを使用)。
  • インポートされた行の固有索引列の値が既存の表の行と一致する場合に、既存の行を更新する (オプション)。

マップ済みおよび変換済みのデータを、ターゲット Db2® 表に挿入する前に変更するために、インポートの最中に REXX プロシージャーを使用できます。この時点では、すべての REXX 関数を使用でき、REXX プロシージャーを用いてレコードを除外するか、インポートを停止できます。

インポート処理の最後に、次の統計情報が表示されます。

  • 正常にインポートされた行の数。
  • 重複行エラーの数。
  • 更新された重複行の数 (オプション)。
  • 失敗した重複行更新の数 (オプション)。
  • エラーが発生した行の数。
  • テンプレート選択によってスキップされた行の数。
  • REXX プロシージャーで除外された行の数。

1  DBI DSNIN=data_set_name? VOLSER=volume_serial_number
1 TCIN=template/copybook_data_set_name(member)
1 TINPUT=TDDIN
1 TINPUT=ddname?TINMEM=member
1  OBJOUT=? ? location. owner. name
1 ? ? OBJOLOCN=location OBJOOWNR=owner OBJONAME=name
1! TOUTPUT=TDDOUT
1 TOUTPUT=ddname?TOUTMEM=member
1 TMOUT=template_data_set_name(member)
1! UPDATE=NO
1 UPDATE=YES
1! AUTOCOMMIT=0
1 AUTOCOMMIT=value
1! STARTPOS=1
1 STARTPOS=position
7 DUPMAX=
8.1 ALL
8.1 nnn
1! DELROWS=NO
1 DELROWS=YES
8 ROWS=
9.1 ALL
9.1 num
8? PROC=
9.1 procname
9.1 *+  REXX prodecure statement/+.
CSV import options

1! CSVIMP=NO
1 CSVIMP=YES
1! CSVIHDR=NO
1 CSVIHDR=YES
1! CSVIDBCS=NO
1 CSVIDBCS=YES
1! CSVISNGL=NO
1 CSVISNGL=YES
1! CSVIDLM=','
1 CSVIDLM=delimiter
6 NULLIND=character
DSNIN=data_set_name
インポートされるデータを含んでいるデータ・セットの名前。データ・セットが区分されている場合は、メンバー名が必要です。
VOLSER=volume_serial_number
入力データ・セットのボリューム通し番号。このフィールドは、アンカタログされたデータ・セットにだけ必要です。
TINPUT=ddname
入力データのレコード構造を記述したテンプレート・メンバーが含まれているデータ・セットの DD ステートメントに対する参照を定義します。デフォルトは、TDDIN です。
TINMEM=member
コピーブックまたはテンプレート・メンバーが DD ステートメントで指定されていない場合に、TINPUT パラメーターによって識別されるデータ・セットのコピーブックまたはテンプレート・メンバーの名前。TCIN パラメーターが指定されている場合、このパラメーターを指定することはできません。
TCIN=template/copybook_data_set_name(member)
インポートされるデータのレコード構造を記述したテンプレートまたはコピーブックの PDS (template/copybook_data_set_name) とメンバー名 (member)。FM/Db2 が生成する JCL では TCIN が指定されます。データ・セット用テンプレート/コピーブックの指定を参照してください。
OBJOUT=location.owner.name
ターゲット・オブジェクトがある Db2® リモート・サーバーの名前 (location、オプション) 、ターゲット・オブジェクトの所有者の名前 (owner、オプション)、およびコピーされるターゲット・オブジェクトの名前 (name)。

location が指定されていない場合、現在の (ローカル) Db2® サーバーが使用されます。owner が指定されていない場合、オブジェクト名は現在の SQLID で修飾されます。FM/Db2 がユーティリティー制御ステートメントを生成する場合、owner 値は非ブランクです。

完全修飾名が JCL デックの単一行に納まる場合、OBJOUT を使用してください。最後の使用可能列は列 71 です。完全修飾名が JCL デックの単一行に納まらない場合は、OBJOLOCN、OBJOOWNR、OBJONAME キーワード (複数可) を使用して、オブジェクトを指定します。

OBJOLOCN=location
ターゲット・オブジェクトがある Db2® リモート・サーバーの名前 (location、オプション)。Db2 オブジェクト名 の指定を参照してください。
OBJOOWNR=owner
インポートされるターゲット・オブジェクトの所有者の名前 (owner、オプション)。Db2 オブジェクト名 の指定を参照してください。
OBJONAME=name
インポートされるターゲット・オブジェクトのオブジェクト名 (name)。Db2 オブジェクト名 の指定を参照してください。
TOUTPUT=ddname
ターゲット Db2® オブジェクトを記述した Db2® テンプレートが含まれているデータ・セットの DD ステートメントに対する参照を定義します。連結した DD を指定する場合は、メンバー名 (member) を TOUTMEM キーワードで指定する必要があります。Db2 オブジェクト用テンプレートの指定を参照してください。
TOUTMEM=member
コピーブックまたはテンプレート・メンバーが DD ステートメントで指定されていない場合に、TOUTPUT パラメーターによって識別されるデータ・セットのコピーブックまたはテンプレート・メンバーの名前。このパラメーターは、TMOUT パラメーターが指定されている場合は、指定しないでください。Db2 オブジェクト用テンプレートの指定を参照してください。
TMOUT=template_data_set_name(member)
ターゲット Db2® オブジェクトを記述した FM/Db2 テンプレートの PDS (template_data_set_name) とメンバー名 (member)。Db2 オブジェクト用テンプレートの指定を参照してください。
UPDATE
FM/Db2 が、SQLCODE-803 (重複キー) エラーを生成した行の更新を試行するかどうかを指定します。
YES
FM/Db2 は既存の行の更新を試みます。表内の列のうち、少なくとも 1 つの固有索引の一部である列のすべてが行の識別に使用されます。更新操作の前には、インポートされた行と既存の行の間で比較は 行われません (すなわち、更新は、インポートされた行と既存の行が同じかどうかに 無関係に行われます)。このオプションを使用するときは、ビュー名ではなく、Db2® 表名を指定することをお勧めします。FM/Db2 は、ビューに定義されたビュー内の既存の行の更新は試みません。
NO
行は更新されません。これは、デフォルトです。
AUTOCOMMIT=value
FM/Db2 がインポート時に Db2® コミットを発行する頻度を示す数値を指定します。デフォルトはゼロです。ゼロは、インポート操作時に Db2® コミットが発行されないことを意味します。任意の正値を指定すると、インポート時にその値の回数の変更が正常に行われた後、FM/Db2Db2® コミットを発行します。変更が正常に行われるのは、レコードが正常に挿入されるとき、またはレコードの挿入を試行した結果、重複キー・エラーになった後で行が正常に更新されるときのどちらかです。各 Db2® コミットが発行された後、カウンターがリセットされるので、複数の Db2® コミットが発行される場合があります。インポート時にエラーが発生するときに、1 つ以上の Db2® コミットが発行されていた場合、最後の Db2® コミット点の次に行われた変更のみがバックアウトされます。
STARTPOS=position
インポートの開始レコードを示す数値を指定します。デフォルトは 1 です。これは、FM/Db2 がインポート・ファイルの最初のレコードからインポートが開始することを意味します。1 より大きい任意の値を指定すると、FM/Db2position-1 のレコードをスキップしてから、インポートを開始します。
DUPMAX
FM/Db2 がインポート処理を終了するまで許可される重複キー・エラーの数。
ALL または 0
制限なし。
num
許可される重複キー・エラーの数。最大で 2147483647 です。
DELROWS
FM/Db2 が、コピー操作を開始する前にターゲット表のすべての行の削除を試行するかどうかを指定します。
YES
すべての行の削除を試行します。
NO
行を削除しません。これは、デフォルトです。
ターゲット表からの行の削除は、DELETE * FROM <object name> を使用して実行されます。行の削除で参照整合性関連のエラーが発生した場合、削除は失敗します。
ROWS
インポートするレコードの最大数。
ALL
インポート・データ・セットのすべてのレコードがターゲット・オブジェクトに挿入されます。
num
インポートするレコードの最大数。有効範囲: 1-99999999.
PROC
REXX プロシージャー。
procname
インポート・レコードを処理するときに使用する REXX プロシージャーの名前。
*
インライン・プロシージャー。* の後ろに 1 つ以上の REXX プロシージャー・ステートメントを記述し、「/+.」で終了します。
CSV インポート・オプション
CSVIMP
デフォルトは NO です。テンプレートを使用して CSV データをインポートする場合は、CSVIMP=YES を指定します。
CSVIHDR
デフォルトは NO です。インポートする CSV データ・セットに見出しが含まれている場合は、YES を指定します。
CSVIDBCS
デフォルトは NO です。インポートする CSV データ・セットに、シフトイン (x'0E') およびシフトアウト (x'0F') 文字で囲まれた 2 バイト・データ (DBCS) 文字が含まれている場合は、YES を指定します。
CSVISNGL
デフォルトは NO です。インポートする CSV データ・セットに一重引用符によるカプセル化がある場合は、YES オプションを指定します。
CSVIDLM=delimiter
デフォルトはコンマ「,」文字です。このキーワードを使用して、コンマ「,」文字の代わりの区切り文字を指定します。
NULLIND=character
このキーワードを使用して、CSV 入力データ・セットでヌル値を表すために使用されたヌル標識値を指定します。対応する CSV 値に次が含まれる場合は、ヌル可能列がヌルに設定されます。
  1. ブランク以外のヌル標識値。
  2. ヌルの CSV 値。例えば、2 つの連続する区切り文字「,,」などです。

例(X)

例 1: 順次ファイルから DSN8810.EMP にデータをインポートします。データをインポートする前に、DSN8810.EMP のすべての行を削除します。

//DBI JOB (acct),'name'
//* Import data from a sequential file into DSN8810.EMP.
//* Delete all the rows from the table before importing the data.
//*
//FMNDB2   EXEC PGM=FMNDB2,PARM=('SSID=DSN1,SQID=ID1')
//STEPLIB  DD DSN=FMN.SFMNMOD1,DISP=SHR
//         DD DSN=DB2V810.DSN1.SDSNEXIT,DISP=SHR
//         DD DSN=DB2.V810.SDSNLOAD,DISP=SHR
//SYSPRINT DD SYSOUT=*
//FMNTSPRT DD SYSOUT=*
//SYSTERM  DD SYSOUT=*
//SYSIN    DD *
$$FILEM DBI DSNIN=ID1.EXPORT.EMP.EXAMPLE1,
$$FILEM TCIN=ID1.FM.TEMPLATE(EMP),
$$FILEM OBJOUT="DSN8810"."EMP",
$$FILEM UPDATE=NO,
$$FILEM DUPMAX=ALL,
$$FILEM DELROWS=YES,
$$FILEM ROWS=ALL
/*

Example 2: 順次ファイルから DSN8810.EMP にデータをインポートします。REXX プロシージャー PROC1 を使用して、レコードを挿入する前に、順次ファイルの各レコードを処理します。重複キー・エラーを発生させた行を更新します。重複キー・エラーは、最大で 50 件までとします。

//DBI JOB (acct),'name'
//* Import data from a sequential file into DSN8810.EMP.
//*
//FMNDB2   EXEC PGM=FMNDB2,PARM=('SSID=DSN1,SQID=ID1')
//STEPLIB  DD DSN=FMN.SFMNMOD1,DISP=SHR
//         DD DSN=DB2V810.DSN1.SDSNEXIT,DISP=SHR
//         DD DSN=DB2.V810.SDSNLOAD,DISP=SHR
//SYSPRINT DD SYSOUT=*
//FMNTSPRT DD SYSOUT=*
//SYSTERM  DD SYSOUT=*
//FMNEXEC  DD DSN=ID1.EXEC,DISP=SHR
//SYSIN    DD *
$$FILEM DBI DSNIN=ID1.EXPORT.EMP.EXAMPLE1,
$$FILEM TCIN=ID1.FM.TEMPLATE(EMP),
$$FILEM OBJOUT="DSN8810"."EMP",
$$FILEM UPDATE=YES,
$$FILEM DUPMAX=50,
$$FILEM DELROWS=NO,
$$FILEM ROWS=ALL,
$$FILEM PROC=PROC1
/*

戻りコード

DBI 関数からの戻りコードは次のとおりです。

0
関数の処理が正常に完了しました。
16
重大なエラーが発生しました。

関連機能

DBC
ある Db2® オブジェクトから別のオブジェクトへのデータのコピー (DBC (コピー) バッチ・コマンド)
DBX
Db2® オブジェクトから順次ファイルまたは VSAM ファイルへのデータのエクスポート (DBX (エクスポート) バッチ・コマンド)
D2G
Db2® データの作成 (生成) (D2G (データ生成) バッチ・コマンド)