如果目标表具有参照完整性,如何在Teradata中使用Fastutil或MLOAD之类的导入实用工具?

问题描述 投票:0回答:1

我是Teradata的新手,几周后开始探索。我知道Fastload或Multiload实用程序仅在表上没有参照完整性(如外键关系)时才起作用。我想知道,如果我的表实际上有一个外键引用,又想从任何文本或定界文件中将数据导入到该表中,该怎么办?在使用fastload / mload或任何其他导入方法方面有什么调整吗?

sql teradata data-import mload
1个回答
0
投票

Gowtham Vakani,

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

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

Limitation-目标表不应具有辅助索引,联接索引和外键引用。

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

第一阶段或采集阶段

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

[Phase 2

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

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

  • 导入
  • 删除

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

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

Limitation-MultiLoad有一些限制。

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

MultiLoad的工作方式-MultiLoad导入具有五个IMPORT阶段:

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

TPUMP是Teradata并行数据泵的缩写。据了解,FastLoad和MultiLoad是海量数据的负载。但是TPump使用行哈希锁一次加载一行数据。因为它锁定在此级别,而不是像MultiLoad那样锁定在表级别,所以TPUMP可以在一个表上进行许多同时或并发的更新。TPump从平面文件向ROW LEVEL的填充Teradata表执行插入,更新,删除和更新。

TPump支持:

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

限制

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.