开发手册 欢迎您!
软件开发者资料库

Teradata - MultiLoad

Teradata MultiLoad - 从简单和简单的步骤学习Teradata,从基本到高级概念,包括简介,安装,架构,关系概念,数据类型,表格,数据操作,SELECT语句,逻辑和条件运算符,SET运算符,字符串处理,日期/时间函数,内置函数,聚合函数,CASE和COALESCE,主索引,连接,子查询,表类型,空间概念,二级索引,统计,压缩,解释,哈希算法,JOIN索引,视图,宏,存储过程,JOIN策略,分区主索引,OLAP功能,数据保护,用户管理,性能调整,FastLoad,MultiLoad,FastExport,BTEQ。

MultiLoad可以一次加载多个表,它还可以执行不同类型的任务,如INSERT,DELETE,UPDATE和UPSERT.它一次最多可以加载5个表,并在脚本中执行多达20个DML操作. MultiLoad不需要目标表.

MultiLoad支持两种模式 :

  • IMPORT

  • DELETE

除目标表外,MultiLoad还需要工作表,日志表和两个错误表.

  • 日志表 : 用于维护加载期间将用于重启的检查点.

  • 错误表 : 发生错误时,在加载期间插入这些表.第一个错误表存储转换错误,而第二个错误表存储重复记录.

  • 日志表 : 保持MultiLoad每个阶段的结果以重新启动.

  • 工作表 :  MultiLoad脚本为每个目标表创建一个工作表.工作表用于保存DML任务和输入数据.

限制

MultiLoad具有一些限制.

  • 目标表不支持唯一的二级索引.

  • 不支持参照完整性.

  • 不支持触发.

MultiLoad如何工作

MultiLoad import有五个阶段 :

  • 阶段1 : 初步阶段 - 执行基本设置活动.

  • 阶段2 :  DML Transaction Phase  - 验证DML语句的语法并将它们带到Teradata系统.

  • 阶段3 : 获取阶段 - 将输入数据输入工作表并锁定表格.

  • 阶段4 : 申请阶段 - 适用所有DML操作.

  • 阶段5 : 清理阶段 - 释放表锁.

MultiLoad脚本中涉及的步骤是 :

  • 第1步 : 设置日志表.

  • 第2步 : 登录Teradata.

  • 第3步 : 指定目标,工作和错误表.

  • 步骤4 : 定义INPUT文件布局.

  • 第5步 : 定义DML查询.

  • 第6步 : 命名IMPORT文件.

  • 第7步 : 指定要使用的LAYOUT.

  • 步骤8 : 启动负载.

  • 步骤9 : 完成加载并终止会话.

示例

使用以下内容创建文本文件记录并将文件命名为employee.txt.

101,Mike,James,1980-01-05,2010-03-01,1  102,Robert,Williams,1983-03-05,2010-09-01,1 103,Peter,Paul,1983-04-01,2009-02-12,2 104,Alex,Stuart,1984-11-06,2014-01-01,2 105,Robert,James,1984-12-01,2015-03-09,3

以下示例是一个MultiLoad脚本,它从employee表读取记录并加载到Employee_Stg表中.

.LOGTABLE tduser.Employee_log;  .LOGON 192.168.1.102/dbc,dbc;    .BEGIN MLOAD TABLES Employee_Stg;        .LAYOUT Employee;        .FIELD in_EmployeeNo * VARCHAR(10);        .FIELD in_FirstName * VARCHAR(30);       .FIELD in_LastName * VARCHAR(30);        .FIELD in_BirthDate * VARCHAR(10);       .FIELD in_JoinedDate * VARCHAR(10);        .FIELD in_DepartmentNo * VARCHAR(02);      .DML LABEL EmpLabel;       INSERT INTO Employee_Stg (         EmployeeNo,         FirstName,         LastName,         BirthDate,         JoinedDate,         DepartmentNo      )        VALUES (         :in_EmployeeNo,         :in_FirstName,         :in_Lastname,         :in_BirthDate,         :in_JoinedDate,         :in_DepartmentNo      );      .IMPORT INFILE employee.txt        FORMAT VARTEXT ','      LAYOUT Employee      APPLY EmpLabel;     .END MLOAD;  LOGOFF;

执行MultiLoad脚本

创建输入文件employee.txt并将多重脚本脚本命名为EmployeeLoad .ml,然后您可以在UNIX和Windows中使用以下命令运行Multiload脚本.

Multiload < EmployeeLoad.ml;