DBC (コピー) バッチ・コマンド

目的

ある Db2® オブジェクトから別の Db2® オブジェクトへのデータのコピーします。両方のオブジェクトが、現在接続されている Db2® システムからアクセス可能である必要があります。

使用

FM/Db2 コピー・ユーティリティーは、以下を実行できます。

  • オプションで、データをコピーする前にターゲット表からすべての行を削除する。
  • コピーする行と列を選択する。
  • コピーする行の合計数を制限する。
  • データの形式を 1 つ以上の新しい列に再設定する。
  • 列を新しい値またはパターンで初期化する。

FM/Db2コピー・ユーティリティーは、ソース Db2® オブジェクトで定義されている参照整合性関係を考慮しません。


1  DBC
1  OBJIN=? ? location. owner. name
1 ? ? OBJILOCN=location OBJIOWNR=owner OBJINAME=name
1! NATIVE=NO
1 NATIVE=YES
1! TINPUT=TDDIN
1 TINPUT=ddname?TINMEM=member
1 TMIN=template_data_set_name(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! UCREAD=NO
1 UCREAD=YES
1! LOCK=NONE
1 LOCK=
2.1 SHARE
2.1 EXCL
1! DUPKEY=IGNORE
1 DUPKEY=UPDATE
9 DUPMAX=
10.1 ALL
10.1 num
1! REFI=FAIL
1 REFI=IGNORE
1! AUDIT=YES
1 AUDIT=NO
1! DELROWS=NO
1 DELROWS=YES
12 ROWS=
13.1 ALL
13.1 num
OBJIN=location.owner.name
ソース・オブジェクトがある Db2® リモート・サーバーの名前 (location、オプション)、ソース・オブジェクトの所有者の名前 (owner、オプション)、およびコピーされるソース・オブジェクトの名前 (name、オプション)。

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

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

OBJILOCN=location
ソース・オブジェクトがある Db2® リモート・サーバーの名前 (location、オプション)。Db2 オブジェクト名 の指定を参照してください。
OBJIOWNR=owner
コピーされるソース・オブジェクトの所有者の名前 (owner、オプション)。Db2 オブジェクト名 の指定を参照してください。
OBJINAME=name
コピーされるソース・オブジェクトのオブジェクト名 (name)。Db2 オブジェクト名 の指定を参照してください。
NATIVE
2 つの Unicode でエンコードされた表間でデータをコピーする場合、FM/Db2 が Unicode エンコード・データをネイティブに処理するかどうかを指定します。Unicode データのデフォルト処理が必要な場合、このオプションを無視することができます。すなわち、Unicode 表間でデータをコピーする場合、Unicode データがエラー文字に置き換えられる可能性があります。
YES
Unicode データをネイティブに処理します。
NO
Unicode データをネイティブに処理しません。これは、デフォルトです。
TINPUT=ddname
コピーされるソース Db2® オブジェクトを記述した Db2® テンプレートが含まれているデータ・セットの DD ステートメントに対する参照を定義します。連結した DD を指定する場合は、メンバー名 (member) を TINMEM キーワードで指定する必要があります。Db2 オブジェクト用テンプレートの指定を参照してください。
TINMEM=member
コピーブックまたはテンプレート・メンバーが DD ステートメントで指定されていない場合に、TINPUT パラメーターによって識別されるデータ・セットのコピーブックまたはテンプレート・メンバーの名前。TMIN パラメーターが指定されている場合、このパラメーターを指定することはできません。Db2 オブジェクト用テンプレートの指定を参照してください。
TMIN=template_data_set_name(member)
コピーされるソース Db2® オブジェクトを記述した File Manager Db2® テンプレートの PDS (template_data_set_name) とメンバー名 (member)。Db2 オブジェクト用テンプレートの指定を参照してください。
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 オブジェクト用テンプレートの指定を参照してください。
UCREAD
FM/Db2 がソース・オブジェクトにアクセスするときに、非コミット読み取りを使用するかどうかを指定します。
YES
非コミット読み取りを使用します。この場合、Db2® はソース表のデータにアクセスするときにロックを行わないため、FM/Db2 に読み取られた後で行のデータが変わり、データの不整合が発生する可能性があります。
NO
非コミット読み取りを使用しません。これは、デフォルトです。
ロック
データをコピーする前に、ソース表をロックするかどうかを指定します。使用できるオプションは、次のとおりです。
なし
デフォルトの推奨値です。UCREAD=YES で否定されていない限り、Db2® インストール・オプションとソース・オブジェクトの作成時に指定されたオプションに従って、Db2® がロックを行います。
共有
FM/Db2 は、データをコピーする前に、SHARE モードでソース・オブジェクトをロックします。このオプションは表に対してのみ有効で、ソース・オブジェクトがビューの場合は効果がありません。オブジェクトが SHARE モードでロックされている場合、他のユーザーがそのオブジェクトを読み取ることはできますが、更新することはできません。
EXCL
FM/Db2 は、データをコピーする前に、EXCLUSIVE モードでソース・オブジェクトをロックします。このオプションは表に対してのみ有効で、ソース・オブジェクトがビューの場合は効果がありません。オブジェクトが EXCLUSIVE モードでロックされている場合、非コミット読み取りを使用する場合を除き、他のユーザーはそのオブジェクトにアクセスできません。
DUPKEY
FM/Db2 が重複キー・エラーにどのように対応するかを指定します。
IGNORE
FM/Db2 はエラーを無視し、処理を続行します。重複キー・エラーの原因になった行は、ターゲット Db2® オブジェクトにコピーされません。
UPDATE
FM/Db2 は既存の行の更新を試みます。SQLCODE-803 エラーの原因になった固有索引の一部である表の列が、行の識別に使用されます。更新操作の前には、コピーされた行と既存の行の間で比較は行われません (すなわち、更新は、 コピーされた行と既存の行が同じかどうかに無関係に行われます)。ターゲット表で複数の固有索引が定義されている場合は、更新を試みたときに SQLCODE-803 が発生する可能性があります。これは、更新エラーと見なされます。
DUPMAX
FM/Db2 がインポート処理を終了するまで許可される重複キー・エラーの数。
ALL または 0
制限なし。
num
許可される重複キー・エラーの数。最大で 2147483647 です。
REFI
チェック制約違反で発生するエラー (SQLCODE-545) を無視するかどうかを指定します。デフォルトは REFI=FAIL で、チェック制約エラーが発生した場合はコピー処理を終了します。そうでない場合 (REFI=IGNORE)、チェック制約エラーは無視されます。
監査
FM/Db2FM/Db2 監査ログにレコードを書き込むかどうかを指定します。
YES
FM/Db2 監査ログにレコードを書き込む。これは、デフォルトです。
NO
FM/Db2 監査ログにレコードを書き込まない。
このオプションは、ユーザーがインストール設定を変更できないようにするインストール監査オプションが設定されている場合、無視されることがあります。
DELROWS
FM/Db2 が、コピー操作を開始する前にターゲット表のすべての行の削除を試行するかどうかを指定します。
YES
すべての行の削除を試行します。
NO
行を削除しません。これは、デフォルトです。
ターゲット表からの行の削除は、DELETE * FROM <object name> を使用して実行されます。行の削除で参照整合性関連のエラーが発生した場合、削除は失敗します。
ROWS
コピーする行の最大数。
ALL
ソース・オブジェクトのすべての行がターゲット・オブジェクトに書き込まれます。
num
コピーする行の最大数。有効範囲: 1-99999999.

例(X)

例 1: DSN8810.EMP 表をリモート・ロケーションにコピーします。データをコピーする前にターゲット表内の行すべてを削除します。DSN8810.EMP にアクセスするときは、非コミット読み取りを使用します。DSN8810.EMP へのアクセスを監査します。

//DBC JOB (acct),'name'
//* Copy DSN8810.EMP table to the same table at a remote location
//*
//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 DBC OBJIN="DSN8810"."EMP",
$$FILEM OBJOUT=REMLOC."DSN8810"."EMP",
$$FILEM     UCREAD=YES,
$$FILEM     LOCK=NONE,
$$FILEM     DUPKEY=IGNORE,
$$FILEM     DUPMAX=ALL,
$$FILEM     REFI=FAIL,
$$FILEM     AUDIT=YES,
$$FILEM     DELROWS=YES,
$$FILEM     ROWS=ALL
/*

Example 2: DSN8810.EMP 表を DSN8COPY.EMP にコピーします。重複キー・エラーを生成したターゲット表の行を更新します。重複キー・エラーは、最大で 100 件とします。

//DBC JOB (acct),'name'
//* Copy DSN8810.EMP table to a copy of the same table.
//*
//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 DBC OBJIN="DSN8810"."EMP",
$$FILEM OBJOUT="DSN8COPY"."EMP",
$$FILEM     LOCK=NONE,
$$FILEM     DUPKEY=UPDATE,
$$FILEM     DUPMAX=100,
$$FILEM     REFI=FAIL,
$$FILEM     ROWS=ALL
/*

戻りコード

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

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

関連機能

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