Delta Load - 用于识别更新的ETL过程

时间:2017-02-10 21:21:19

标签: sql-server ssis-2012

我有一个超过3000万行的表,执行截断和重新加载需要很长时间。我可以使用SSIS不匹配的输出来进行增量加载,但是我很难获得记录更新的Delta加载。表没有日期字段,因此无法检查上次修改数据的时间。

只是想知道是否有人遇到类似的情况,你是如何解决它的。我不想加载全桌,因为单独这一张桌子可能需要3个小时!

1 个答案:

答案 0 :(得分:0)

在匹配的输出上,执行另一个查找,检查输入行是否与具有匹配主键的行不同。如果不同,请进行更新,如果相同,则不执行任何操作。

我知道有两种方法可以检查行是否相同。

1)将派生列添加到新传入行,该列创建每列的哈希值。然后在本地表中创建相同的哈希列。比较查找中的哈希值。

2)在查找中,加入每个字段......即。 A - > A,B - > B,C - > C等。然后重定向非匹配以进行更新。如果你有blob列,这可能是不可能的。

1号可能更有效但设置更难。