Data Moverは、Teradata DatabaseのDATASETタイプに関連付けられたオブジェクトのコピーをサポートします。TeradataのDATASETタイプは複合データ型(CDT)で、スキーマに基づいて解釈される自己記述ファイルを表わします。基本となるストレージ形式がAVROまたはCSVであるDATASETデータ型は、サポートされます。AVROおよびCSVスキーマを移動することもできます。スキーマは、次の文を使用して作成することができます。
CREATE AVRO SCHEMA SYSUDTLIB.testSchema AS '{ "namespace": "example.avro", "type": "record", "name": "User", "fields": [ {"name": "name", "type": "string"}, {"name": "favorite_number", "type": ["int", "null"]}, {"name": "favorite_color", "type": ["string", "null"]} ] }';
作成後は、スキーマに対してshow schema-typeクエリーを実行すれば、スキーマの定義を取得できます。
SHOW AVRO SCHEMA testSchema
Data Moverを使用したスキーマのコピー
Data Moverは次の方法でスキーマをコピーします。
- Data Moverは、show schema-type sysdtlib.schemaname SQL文を実行してスキーマ作成DDLを取得します。
- Data Moverは、作成スキーマDDLの構文解析は行ないません。まったく同じDDLがターゲット システムで実行されます。Data Moverはスキーマ オブジェクトを再配置または名前変更しません。
- コピーするオブジェクトがターゲット データベースに存在しない場合は、ターゲット データベース上に作成されます。オブジェクトがターゲット データベースに存在する場合は、overwrite_existing_objectsプロパティがfalseに設定されていないとオブジェクトは上書きされます。 その場合、作成タイムエラーが生成されます。
ターゲット システムの列がスキーマを参照している場合、スキーマは上書きされません。
- スキーマを参照するDATASET列を持つテーブルをコピーする場合、スキーマがターゲット システムにすでに存在しているか、ジョブによってコピーされる必要があります。スキーマはSYSUDTLIBデータベースに作成されます。
Data Moverを使用したデータセットのコピー
列の値を照会し、列をDATASET列として移動するために必要な情報が提供されているかを判断します。
- 最大長とDTタイプ コードは、データセット タイプ列に含まれます。
- 列のデータ型がDATASETの場合、ストレージ形式の列には次の値が含まれます。
"Avro": DATASET stored as Avro
- タイトルがdatasetSchemaNameでスキーマの名前が含まれている列は、特定の列に関連付けられています。特定の列に関連付けられているスキーマがない場合、このフィールドの値はNULLです。
データセットは次のコマンドを使用してコピーすることができます。
CREATE TABLE hcExampleTable( id INTEGER, avroFile DATASET(100) STORAGE FORMAT Avro WITH SCHEMA chemDatasetSchema );