Teradata MultiLoad17 Mar 2025 | 5 分钟阅读 Teradata MultiLoad 或 MLoad 是一种命令驱动的加载工具,用于在 Teradata 大型数据库的多个表或视图上进行快速、大批量的数据维护。 MultiLoad 是一种命令驱动的实用程序,可以对 Teradata 关系数据库管理系统 (RDBMS) 的多个表和视图执行快速、大批量的数据维护。 使用一个 MultiLoad 作业,我们可以对 RDBMS 表和视图执行多个不同的导入和删除任务。 - 每个 MultiLoad 导入任务可以并行对多达五个不同的表或视图执行多个数据插入、更新和删除功能。
- 每个 MultiLoad 删除任务可以从单个表中删除大量行。
我们可以使用 MultiLoad 从以下位置导入数据: - 通道连接的客户端系统上的磁盘或磁带文件。
- 网络连接的工作站上的输入文件。
- 单个输入模块 (INMOD) 程序用于选择、验证和预处理输入数据。
- 访问模块。
- 任何提供格式正确的源数据的设备。
接收数据的 RDBMS 中的表或视图可以是任何现有的、我们拥有所需维护任务访问权限的表或视图。 MultiLoad 模式Teradata 提供了两种 MultiLoad 模式,如下所示: 1. MultiLoad 导入 - 每个 MultiLoad 导入任务可以并行对五个目标表执行多个 INSERT、UPDATE、DELETE 和 UPSERT 操作。
- 它还可以使用自定义访问模块从网络连接的系统或大型机连接的系统导入数据。
2. MultiLoad 删除 - 每个 MultiLoad 删除可以从单个表中删除大量数据。
- MultiLoad DELETE 用于对单个表执行全局(所有 AMP)删除操作。
- DELETE 的主要特点是它会绕过瞬态日志 (TJ),并且可以在失败前重新启动。
- 在 MultiLoad DELETE 操作中,我们不能使用主索引,因为主索引访问是 AMP 特定的,但 MultiLoad DELETE 是为全局删除而设计的。
除了目标表之外,MultiLoad 还需要一个工作表、一个日志表和两个错误表。 - 日志表:用于维护加载过程中记录的检查点,这些检查点将用于重新启动。
- 错误表:加载过程中发生错误时,会将数据插入这些表中。第一个错误表存储转换错误,第二个错误表存储重复记录。
- 日志表:维护 MultiLoad 每个阶段的结果,用于重新启动。
- 工作表:MultiLoad 脚本为每个目标表创建一个工作表。工作表用于存放 DML 任务和输入数据。
MultiLoad 功能Teradata MultiLoad 具有以下功能: - 高性能维护操作,在一次传递中对多个表应用更新。
- 最适合更改 1-2% 以上的行。
数据转换功能如果字符数据类型的输入字段目标是具有日期数据类型规范的列,Teradata MultiLoad 可以在将其插入目标表之前将输入数据规范更改为日期。 Teradata MultiLoad 支持以下转换: Teradata MultiLoad 限制Teradata MultiLoad 具有以下限制: - 不支持唯一二级索引:与 FastLoad 一样,MultiLoad 不支持唯一二级索引 (USI),因为在 USI 的情况下,子表可能创建在与实际行所在的 AMP 不同的 AMP 中。
但与 FastLoad 不同的是,它支持非唯一二级索引 (NUSI),因为在这种情况下,会在同一个 AMP 中创建合适的索引。在 MultiLoad 中,每个 AMP 都可以并行独立工作。这就是为什么它支持 NUSI 但不支持 USI。 - 不支持参照完整性:Teradata MultiLoad 不支持目标表上的参照完整性 (RI)。RI 需要过多的系统检查来维护与不同表的参照约束。
- 不允许触发器:触发器涉及一个以上的表。MultiLoad 只处理一个目标表。在使用 MultiLoad 之前,将触发器设置为禁用状态。
- 不允许连接输入文件:如果数据以不同的顺序连接,可能会影响重新启动过程。
- 不支持聚合、指数运算符或算术函数:如果我们需要数据转换,则可以使用 INMOD 在加载数据之前准备数据。
- MultiLoad 不支持 SELECT、外键引用、哈希索引、连接索引、NOPI 表。
MultiLoad 工作原理Teradata MultiLoad 导入有五个阶段 - 第一阶段(初步阶段):执行基本的设置活动。
- 第二阶段(DML 事务阶段):验证 DML 语句的语法并将其发送到 Teradata 系统。
- 第三阶段(获取阶段):将输入数据导入工作表并锁定。
- 第四阶段(应用阶段):应用所有 DML 操作。
- 第五阶段(清理阶段):释放表锁。
MultiLoad 脚本涉及的步骤如下: 步骤 1:设置日志表。 步骤 2:登录到 Teradata。 步骤 3:然后,指定目标表、工作表和错误表。 步骤 4:定义输入文件的布局。 步骤 5:还可以定义 DML 查询。 步骤 6:命名 IMPORT 文件。 步骤 7:并指定要使用的布局。 步骤 8:开始加载。 步骤 9:最后,完成加载并终止会话。 示例创建一个包含以下记录的文本文件,并将文件命名为 emp.txt。 以下示例是一个 MultiLoad 脚本,它从 employee 表读取记录并加载到 Emp_Stg 表。 执行 MultiLoad 脚本创建输入文件 emp.txt 并将 MultiLoad 脚本命名为 EmpLoad.ml 后,我们可以使用 UNIX 和 Windows 中的以下命令运行 MultiLoad 脚本。
|