2016-07-23 18 views
0

如果为更新查询发送已存在的记录(如更新表组件),会发生什么情况?它没有被使用吗?传递现有记录以再次更新在更新表组件中Abinitio

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

+0

为什么用数据库和Ab Initio标记?工作在哪里? –

+0

我在更新表组件(abinitio)中使用更新/插入查询来加载数据库dB2。你能回答我的问题吗? –

回答

0

我的第一种方法与Alex建议的方法相同,但它看起来像加入所有领域的数据库作为关键将需要更多的时间和资源。更好的方法是比较每个字段的重新格式化选择参数或“按表达式”更新的现有值和新值。这只会给出实际更新的记录。 另外Michael是对的,DB2将更新,而不管它是否是实际更新。所以,未使用的端口不会给出没有更新的记录。

1

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

+0

您能否请您将其标记为答案 - 谢谢 – MichaelTiefenbacher

0

您可以尝试使用更新表组件中的未使用端口进行操作,也可以查看ActionRequired标志。

一个简单的方法来确定更新是否会发生,或者更好的只是在更新中只提供更新,是从数据库中加入数据(select语句将选择每个将被更新文件更新的记录),并将其与记录中所有字段上的数据库一起作为关键字加入。与更新文件有关的未使用端口上出现的那些记录是执行更新操作的那些记录。