在Abinitio中的更新表组件中再次传递现有记录以进行更新

时间:2016-07-23 15:02:21

标签: sql sql-update db2 ab-initio

如果为更新查询发送更新查询的已存在记录,会发生什么情况?它没用吗?

我有一个abinitio输出文件,其中包含要更新的记录(未插入)。我只需要收集那些实际更新的记录。那么我们如何在DB(未更新)中分离与以前完全相同的记录,哪些记录至少更新了一个字段?

3 个答案:

答案 0 :(得分:1)

这是一个ETL问题,因为DB2会更新行是否有更改。我不详细了解Ab Initio,但您必须在DB2 Update之前进行更改检测。 通常,ETL工具具有某种“更改捕获”/“比较”/“差异”功能来检测变化。

答案 1 :(得分:0)

您可以尝试使用Update Table组件中的Unused端口,同时查看ActionRequired Flag。

确定更新是否发生的简单方法,或者更好的是,仅提供更新只是从数据库加入数据(select语句将选择要由更新文件更新的每条记录),以及将其与记录中所有字段的数据库连接为密钥。那些与更新文件有关的未使用端口上出现的记录是将执行更新操作的记录。

答案 2 :(得分:0)

我的第一种方法与Alex建议的方法相同,但似乎加入DB并将所有字段作为密钥将需要更多时间和资源。更好的方法是比较要在重新格式化选择参数中更新的现有值和新值,或者为每个字段按表达式过滤。这将仅提供实际更新的记录。 迈克尔也是对的,DB2会更新,无论它是否是实际更新。因此,未使用的端口不会提供未更新的记录。