Data Moverでは、基礎となるデータをTeradataシステムとTeradataテーブルのビュー間でコピーするときに、ビュー データをコピーできます。ビューからデータをコピーする場合は、copyData="true"属性をview要素とともに指定します。
copyData属性はオプションで、デフォルト値はfalseです。copyDataをtrueに設定した場合は、この属性の後にオプションのview_data_table要素を指定できます。
view_data_tableが指定されない場合、Data Moverはビュー データをターゲット ビューにコピーします。また、ジョブ作成時の例外を回避するため、view selection = ”included”要素を指定する必要があります。例:
<views> <view selection="included" copyData="true"> <name>deptsals</name> <database>MyDb</database> </view> </views>上記の例では、"SELECT * from MyDb.deptSals"を使用してビューdeptSalsのデータを選択し、ターゲット上のビューMyDb.deptSalsにロードしています。ビューMyDB.deptSalsがターゲットに存在しない場合は、ソース ビュー定義を使用して作成されます。ビューMyDB.deptSalsがターゲットに存在する場合は、ソース ビュー定義を使用して上書きされます。
view_data_tableを指定する場合は、target_tableで基礎となるビュー データのコピー先テーブルを示し、target_databaseでターゲット テーブルが存在するデータベースを示します。テーブルがターゲットにまだ存在しない場合は、Data Moverによってテーブルが作成されます。ターゲットにテーブルがすでに存在する場合は、そのテーブルにビュー データがロードされます。例:
<views> <view selection="included" copyData="true"> <name>deptsals</name> <database>MyDb</database> <view_data_table> <target_table>TargetTable</target_table> <target_database>TargetDb</target_database> </view_data_table> </view> </views>
上記の例では、"SELECT * from MyDb.deptSals"を使用してビューdeptSalsのデータを選択し、TargetDb.TargetTableテーブルにロードしています。TargetDb.TargetTableがターゲットに存在しない場合は、Data Moverによってターゲット テーブルが作成されます。
Data Moverによって作成されたターゲット テーブルには次のような特性があります。
- マルチセット テーブルである。
- ビューと同じ列名および列タイプで作成される。
- ジャーナルを持たないNO FALLBACKテーブルである。
- セカンダリ インデックスは含まれない。
ビュー データをターゲット ビューにコピーする場合は、次のルールが適用されます。
- ソース ビューで複数のテーブルを参照することはできません。ビューに複数の参照テーブルがある場合、実行時例外が発生します。
- Data Moverはソース ビュー定義を使用してターゲット ビュー定義を作成するため、compare_ddl要素は無視されます。
- ソース ビューで参照されるテーブルは、ターゲットに存在する必要があるか、ジョブによって移動させる必要があります。
ビュー データをターゲット ビューにコピーする場合は、最初にソース ビュー データがターゲット ステージング テーブルにコピーされ、ビュー データがターゲット ビューに存在する場合は、ソース ビュー定義を使用してターゲット ビューが上書きされます。次に、ソース ビュー データがステージング テーブルからターゲット ビューにコピーされます。ビューにターゲット参照テーブルのすべての列が含まれていない場合は、ターゲット参照テーブルにnull値が含まれている可能性があります。そのため、この機能の使用には注意が必要です。
ビュー データをターゲット テーブルまたはターゲット ビューにコピーする場合は、ロード ユーティリティの使用について次のルールが適用されます。
- ソース ステージング テーブルを使用しない場合は、DSAをロード ユーティリティとして使用しません。
- ビュー データをコピーするときに、force_utilityの値としてソース ステージング テーブルを使用せずにDSAを指定するか、またはTPTAPI_LOADを指定すると、作成時エラーが発生します。
- force_utilityにソース ステージング テーブルとともにTPTAPI_STREAM、JDBC、またはDSAが指定されていない限り、ビュー データはTPTAPI_UPDATEオペレータを使用してコピーされます。
- ビュー データを他のテーブルとともにコピーする場合、ビュー データはTPTAPI_UPDATEオペレータを使用してコピーされますが、他のデータ テーブルをTPTAPI_LOADオペレータを使用してコピーすることができます。このようなコピーは、force_utilityを指定しないで、かつソース ステージング テーブルを使用していない場合、またはforce_utilityをTPTAPIとして指定している場合に実行されます。