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 );