Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如果目标表具有引用完整性,如何在Teradata中使用导入实用程序(如Fastload或MLOAD)?_Sql_Teradata_Data Import_Mload - Fatal编程技术网

Sql 如果目标表具有引用完整性,如何在Teradata中使用导入实用程序(如Fastload或MLOAD)?

Sql 如果目标表具有引用完整性,如何在Teradata中使用导入实用程序(如Fastload或MLOAD)?,sql,teradata,data-import,mload,Sql,Teradata,Data Import,Mload,我是Teradata的新手,几周前开始探索。我知道Fastload或Multiload实用程序只有在表上没有引用完整性(如外键关系)时才能工作。我想知道,如果我的表实际上有一个外键引用,并且我想从任何文本或分隔文件向该表导入数据,该怎么办。使用fastload/mload或任何其他导入方法是否有调整 Gowtham Vakani 我相信您需要TPUPM,但在Teradata中的三个负载实用程序中,这一个最不有效。 我推荐FastLoad,方法是将源数据转储到适合FastLoad的登录表中,然后在

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

Gowtham Vakani

我相信您需要TPUPM,但在Teradata中的三个负载实用程序中,这一个最不有效。 我推荐FastLoad,方法是将源数据转储到适合FastLoad的登录表中,然后在Teradata中进行必要的转换。 我在下面列出了三种类型之间的一些信息和差异,因此您可以根据自己的需要和绩效计划进行选择。 如果您需要,我可以给您发送一些示例脚本

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

限制-目标表不应具有辅助索引、联接索引和外键引用

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

第一阶段或收购阶段

  • 第一阶段的主要目的是将数据从主机输入Teradata系统
  • 解析引擎从输入文件读取记录,并向每个AMP发送一个块。数据以64 K块移动,并存储在AMPs上的工作台中
  • 每个放大器存储记录块
  • 然后AMP散列每个记录,并将它们重新分配到正确的AMP
  • 在第1阶段结束时,每个AMP都有自己的行,但它们不在行哈希序列中,因为它首先存储
第二阶段

  • 当FastLoad收到END LOADING语句时,阶段2开始
  • 一旦数据从服务器移出,每个AMP将散列其工作表行
  • 每个AMP按行哈希对记录进行排序并将其写入磁盘
  • 每个ow传输到它们永久驻留的工作台
  • 表的行以数据块的形式存储在磁盘上
  • 目标表上的锁被释放,错误表被丢弃
但是,多重加载没有相同的限制。 MultiLoad可以一次加载多个表,还可以执行不同类型的任务,如插入、删除、更新和上传。它可以从LAN或通道环境一次加载多个最多5个空表或填充的目标表,并在脚本中执行最多20个DML操作。多重加载不需要目标表。 多负载支持两种模式:

  • 进口
  • 删除
除了目标表之外,MultiLoad还需要一个工作表、一个日志表和两个错误表

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

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

  • 第一阶段− 初步阶段–这是基本设置阶段。它用于成功加载数据的几个初步设置活动

  • 第二阶段− DML Transacd根据源数据的格式,导入数据的替代工具有
    BTEQ
    SQL Assistant
    。如果您的表非常大,您可以始终删除引用完整性(RI),使用加载实用程序加载,手动清除RI冲突,然后重新创建RI。您可以使用mload/fload加载