关于复制数据集和模式 - Teradata Data Mover

Teradata® Data Mover 用户指南

Product
Teradata Data Mover
Release Number
17.20
Published
2022 年 9 月
Language
中文 (简体)
Last Update
2022-10-12
dita:mapPath
zh-CN/tsn1650877444606.ditamap
dita:ditavalPath
zh-CN/mpm1591127278842.ditaval
dita:id
B035-4101
Product Category
Analytical Ecosystem
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
 
);