数据阶段挑战

问题描述

我有多个txt文件,每个文件有100万个记录(说10个文件),这些文件保存在@H_502_1@LIST_OF_FILES.txt中。

我已经创建了一个序列并行作业,以从那些文件提取数据以加载到表(db2)中。

想象一下,我已经完成了前两个文件。在加载第三个文件时(考虑到目前已将10000条记录加载到表中),并行作业由于某些环境问题而中止。

现在,我想从10001开始加载记录,在该记录中作业被终止。

作业设计

  1. 执行命令activity_1:@H_502_1@wc -l LIST_OF_FILES.txt.
  2. 启动循环:开始:1,步骤:1,到:执行命令activity_1的输出
  3. 执行命令activity_2:@H_502_1@head -output_loop_counter LIST_OF_FILES.txt | tail -1.
  4. 并行作业:提取作业以将记录从文件加载到表中。
  5. 执行命令activity_3:将提取文件移动到另一个文件夹。
  6. 结束循环:上述步骤将持续到最后一个文件

解决方法

这不是开箱即用的功能。您需要一个作业设计来跟踪已处理的记录数,以便可以从已知的好点重新开始。同样要记住,如果作业中止,任何待处理的事务都会回滚-您的设计可能需要检查实际上已将多少行加载到目标表中。

,

我将保持上述序列设计并更改提取作业,以在表的UC /主键上对目标表执行查找,假设您有一个。

将失败的查找设置为拒绝,然后将加载阶段连接到拒绝链接。您可以将有效查找转储到复制阶段,以使它们死胡同并摆脱它们。这略微模仿了变更捕获阶段,但是没有排序要求,也没有关于值的警告。