- Teradata 教程
- Teradata - 首页
- Teradata 基础知识
- Teradata - 简介
- Teradata - 安装
- Teradata - 架构
- Teradata - 关系型数据库概念
- Teradata - 数据类型
- Teradata - 表
- Teradata - 数据操作
- Teradata - SELECT 语句
- 逻辑运算符和条件运算符
- Teradata - 集合运算符
- Teradata - 字符串操作
- Teradata - 日期/时间函数
- Teradata - 内置函数
- Teradata - 聚合函数
- Teradata - CASE 和 COALESCE
- Teradata - 主索引
- Teradata - 连接
- Teradata - 子查询
- Teradata 高级特性
- Teradata - 表类型
- Teradata - 空间概念
- Teradata - 二级索引
- Teradata - 统计信息
- Teradata - 压缩
- Teradata - EXPLAIN 计划
- Teradata - 哈希算法
- Teradata - 连接索引
- Teradata - 视图
- Teradata - 宏
- Teradata - 存储过程
- Teradata - 连接策略
- Teradata - 分区主索引
- Teradata - OLAP 函数
- Teradata - 数据保护
- Teradata - 用户管理
- Teradata - 性能调优
- Teradata - FastLoad
- Teradata - 多表加载 (MultiLoad)
- Teradata - FastExport
- Teradata - BTEQ
- Teradata 有用资源
- Teradata - 问答
- Teradata - 快速指南
- Teradata - 有用资源
- Teradata - 讨论
Teradata - 多表加载 (MultiLoad)
MultiLoad 可以同时加载多个表,并且可以执行不同类型的任务,例如 INSERT、DELETE、UPDATE 和 UPSERT。它一次最多可以加载 5 个表,并在脚本中执行最多 20 个 DML 操作。MultiLoad 不需要目标表。
MultiLoad 支持两种模式:
- 导入 (IMPORT)
- 删除 (DELETE)
除了目标表之外,MultiLoad 还需要工作表、日志表和两个错误表。
日志表 - 用于维护加载过程中生成的检查点,这些检查点将用于重新启动。
错误表 - 这些表在加载过程中发生错误时插入。第一个错误表存储转换错误,而第二个错误表存储重复记录。
日志表 - 维持 MultiLoad 各阶段的结果,用于重新启动。
工作表 - MultiLoad 脚本为每个目标表创建一个工作表。工作表用于保存 DML 任务和输入数据。
限制
MultiLoad 有一些限制。
- 目标表不支持唯一二级索引。
- 不支持参照完整性。
- 不支持触发器。
MultiLoad 工作原理
MultiLoad 导入包含五个阶段:
阶段 1 - 预备阶段 - 执行基本设置活动。
阶段 2 - DML 事务阶段 - 验证 DML 语句的语法并将它们引入 Teradata 系统。
阶段 3 - 获取阶段 - 将输入数据引入工作表并锁定表。
阶段 4 - 应用阶段 - 应用所有 DML 操作。
阶段 5 - 清理阶段 - 释放表锁。
MultiLoad 脚本涉及的步骤:
步骤 1 - 设置日志表。
步骤 2 - 登录 Teradata。
步骤 3 - 指定目标表、工作表和错误表。
步骤 4 - 定义输入文件布局。
步骤 5 - 定义 DML 查询。
步骤 6 - 命名导入文件。
步骤 7 - 指定要使用的布局。
步骤 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 并将 multiload 脚本命名为 EmployeeLoad.ml 后,可以使用以下命令在 UNIX 和 Windows 中运行 Multiload 脚本。
Multiload < EmployeeLoad.ml;