Data Moverは、ターゲット テーブルがすでに存在するときに部分テーブル コピーまたは完全テーブル コピーを実行する場合、ターゲット ステージング テーブルを使用します。staging_to_target要素の値によって、ターゲット ステージング テーブルからターゲット テーブルにデータをコピーする方法が指定されます。これは、Data Moverが通常、ステージング テーブルからターゲット テーブルにデータをコピーする際に使用する方法よりも優先されます。Data Moverの方法では、キー列、データベース バージョンなどの要因に応じてMERGEまたはDELETEをINSERT/SELECTとともに使用します。
MERGE文で要求されるUPDATE権限を所有していない場合は、staging_to_target要素を使用します。ただし、Data Moverはデータをコピーするのに最も効率的な方法を自動的に選択するため、このパラメータは慎重に使用します。
staging_to_target要素はオプションであり、XMLファイルでのみ指定できます。コマンドライン インターフェースへのパラメータとしては指定できません。
staging_to_target要素は、XMLファイルのkey_columns要素の下にあります。次のテーブルに、staging_to_target要素の有効な値を示します。
値 | 説明 |
---|---|
NOT_SPECIFIED | (デフォルト)ターゲット ステージング テーブルからターゲット テーブルにデータをコピーする際、最も効率的な方法をData Moverが選択するため、この値が推奨されます。 |
MERGE | MERGE文を使用してデータをコピーすることを指定します。Data Moverは、MERGE文を使用してデータをコピーできるかどうかを検証します。MERGE文を使用することができない場合、エラーが発生します。MERGE文はマルチセット テーブルのコピーには使用できないことに注意します。 |
DELETE_INSERT | ターゲット テーブルの行がDELETE文で削除され、INSERT/SELECT文でステージング テーブルからターゲット テーブルにコピーされることを指定します。 削除される行はジョブによって異なります。部分テーブル コピーでは、SQLクエリーに一致する行のみが削除されます。完全テーブル コピーでは、すべての行が削除されます。 |
INSERT_ONLY | ターゲット テーブルから行が削除されないように指定します。削除せず、INSERT/SELECT文でステージング テーブルからターゲット テーブルに行をコピーします。 |
DELETE_DISTINCT_INSERT | ターゲット テーブルの行がDELETE DISTINCT SELECT文で削除され、INSERT/SELECT文でステージング テーブルからターゲット テーブルにコピーされるように指定します。 このメソッドは、部分コピーでのみ、および明示的に指定された場合にのみ使用されます。 このメソッドでは、キー列が非固有キーの場合に削除パフォーマンスが向上します。 |
staging_to_target要素の機能は個々のテーブルに対して有効なため、次の例のように、staging_to_target機能を適用するテーブルを指定します。
<database selection="unselected"> <name>srcDatabase</name> <table selection="included"> <name>srcTable</name> <sql_where_clause> <![CDATA[WHERE colA > 100]]> </sql_where_clause> <key_columns> <key_column>colA</key_column> </key_columns> <staging_to_target>insert_only</staging_to_target> </table> </database>