0

我是 Teradata 的新手,几周前开始探索。我知道 Fastload 或 Multiload 实用程序只有在表上没有参照完整性时才能工作,比如外键关系。我想知道,如果我的表实际上有一个外键引用,并且我想从任何文本或分隔文件将数据导入该表,该怎么办。使用 fastload/mload 或任何替代方法导入是否有调整?

4

1 回答 1

0

戈瑟姆·瓦卡尼

我相信您需要 TPUPM,但在 Teradata 中的三个加载实用程序中,这个效率最低。我推荐 FastLoad,方法是将源数据转储到适合 FastLoad 的登陆表中,然后在 Teradata 中进行必要的转换。我在下面提供了一些信息和三种类型之间的一些区别,因此您可以根据自己的需要和性能计划进行选择。如果您需要,我可以向您发送一些示例脚本。

FastLoad实用程序用于将数据加载到空表中。由于它不使用瞬态日志,因此可以快速加载数据。即使目标表是 MULTISET 表,它也不会加载重复的行。

限制- 目标表不应有二级索引、连接索引和外键引用。

FastLoad 的工作原理- FastLoad 分两个阶段执行。FastLoad 将其工作分为两个阶段,两个阶段都是为提高速度而设计的。

第一阶段或收购阶段

  • 阶段 1 的主要目的是将数据从主机计算机获取到 Teradata 系统。
  • 解析引擎从输入文件中读取记录并向每个 AMP 发送一个块。数据以 64 K 块的形式移动并存储在 AMP 的工作表中。
  • 每个 AMP 都存储记录块。
  • 然后 AMP 对每条记录进行哈希处理并将它们重新分配给正确的 AMP。
  • 在第 1 阶段结束时,每个 AMP 都有自己的行,但它们不像最初存储的那样按行哈希序列排列。

阶段2

  • 当 FastLoad 收到 END LOADING 语句时,阶段 2 开始。
  • 数据从服务器移出后,每个 AMP 都会对其工作表行进行哈希处理。
  • 每个 AMP 对行哈希上的记录进行排序并将它们写入磁盘。
  • 每个 ow 都转移到它们永久驻留的工作台上。
  • 表的行以数据块的形式存储在磁盘上。
  • 目标表上的锁被释放,错误表被删除。

然而, MultiLoad没有相同的限制。MultiLoad 可以一次加载多个表,还可以执行不同类型的任务,例如INSERTDELETEUPDATEUPSERT。它可以一次从 LAN 或 Channel 环境加载多个最多 5 个空的或填充的目标表,并在一个脚本中执行最多 20 个 DML 操作。MultiLoad 不需要目标表。MultiLoad 支持两种模式:

  • 进口
  • 删除

MultiLoad 除了目标表外,还需要一个工作表、一个日志表和两个错误表。

  • 日志表 - 日志表存储加载期间的处理记录信息。此表包含系统上运行的每个 MultiLoad 的一行。
  • 错误表:与 FastLoad 一样,MultiLoad 也有两个错误表。第一个错误表 (ET)。它包含从源获取数据时可能发生的所有转换和约束错误。第二个违反唯一性 (UV) 表,用于存储具有唯一主索引 (UPI) 重复值的行。
  • 工作表:MultiLoad 将自动为每个目标表创建一个工作表。通常,在 IMPORT 模式下,MultiLoad 可能有一个或多个工作表,而在 DELETE 模式下,您只有一个。工作表的目的是 1) 执行 DM 任务 2) 将输入数据应用于 AMP。

限制- MultiLoad 有一些限制。

  • 目标表不支持唯一二级索引:与 FastLoad 一样,MultiLoad 不支持唯一二级索引 (USI)。但与 FastLoad 不同的是,它确实支持使用非唯一二级索引 (NUSI),因为索引子表行与数据行位于同一 AMP 上。
  • 不支持引用完整性:在表上定义的引用完整性将需要更多系统检查以防止引用约束。
  • 加载时不支持触发器:在使用之前禁用所有触发器。
  • 不允许连接输入文件:如果文件以不同的顺序连接或在运行之间删除数据,则可能会影响重新启动。
  • 无连接索引:在运行 MultiLoad 之前必须删除所有连接索引,然后在加载完成后重新创建它们。
  • 不会处理聚合、算术函数或求幂:如果您需要数据转换或数学运算,最好在加载数据之前使用 INMOD 来准备数据。
  • 目标表:目标表可以有数据。MultiLoad 可以加载目标表已经加载的数据。

MultiLoad 的工作原理- MultiLoad 导入有五个 IMPORT 阶段:

  • 阶段 1 - 初步阶段 - 这是基本设置阶段。它用于成功加载数据的几个初步设置活动。
  • Phase 2 - DML Transacon Phase - 验证 DML 语句的语法并将它们带到 Teradata 系统。由于 MultiLoad 支持多个 DML 函数,所有 SQL 数据操作语言 (DML) 语句都将发送到 Teradata 数据库。
  • 第 3 阶段 - 收购阶段 - 一旦设置完成存储在每个 AMP 上的 PE 计划。然后,锁、表头和实际输入数据也将存储在工作表中。将输入数据带入工作表并锁定表。
  • 阶段 4 - 应用阶段 - 在此阶段,所有 DML 操作都应用于目标表。
  • 阶段 5 - 清理阶段 - 表锁将被释放,所有中间工作表将被删除。

TPUMP是 Teradata Parallel Data Pump 的简称。众所周知,FastLoad 和 MultiLoad 是大量数据的负载。但是 TPump 使用行哈希锁一次加载一行数据。因为它在这个级别锁定,而不是像 MultiLoad 那样在表级别锁定,所以 TPUMP 可以对表进行许多同时或并发更新。TPump 从平面字段执行插入、更新、删除和 Upserts 到 ROW LEVEL 填充的 Teradata 表。

TPump 支持:

  • 二级索引
  • 参照完整性
  • 触发器
  • 加入索引
  • 以不同的速率输入数据。

限制

  • 不允许连接输入数据文件。
  • TPump 不会处理聚合、算术函数或求幂。
  • 不允许使用 SELECT 函数。
  • 在单个加载任务中最多可以使用四个 IMPORT 命令。
  • 1900 年之前或 1999 年之后的日期必须用 yyyy 格式表示日期的年份部分,而不是默认格式 yy。
  • 在某些网络连接系统上,使用 TPump 时的最大文件大小为 2GB。
  • 如果使用访问日志记录,TPump 性能将会降低。

TPump 支持一个错误表。错误表执行以下操作:

  • 识别错误。
  • 提供有关错误的一些详细信息
  • 存储实际违规行的一部分以进行调试

与其他实用程序一样,只要不删除日志表和错误表,TPump 脚本就可以完全重新启动。

于 2020-01-14T07:39:38.637 回答