删除然后插入增量加载 - SSIS

时间:2017-02-06 22:09:15

标签: sql ssis-2012

我不知道有人这样做,因为它没有记录在我读过的任何论坛上。基本上我试图从一个有超过5000万行的表加载。该表需要很长时间来执行截断和加载技术。我查看了以下方法

1)我们的CRM系统(SQL服务器)的CDC(不支持),但根据我的阅读是最优选的方法

2)没有匹配且匹配使用分割条件的查找任务存储源不逐列匹配的数据,例如src.col1!= Dest.Co11。 src.col1将存储在临时表中以更新目标。 这个方法很麻烦,特别是如果有很多列,因为它们可能是空的,我对这个方法有问题,因为我们有空值的日期字段。

3)好了,我现在想到删除已修改的行,幸运的是我们在每个表上都有一个CreatedOn和ModifiedOn列。我在执行SQL任务中做的第一件事是使用下面的内容删除过去5天的数据。

 delete from table 
 where (CreatedOn between getdate()-5 and getdate)
 Or (ModifiedOn between getdate()-5 and getdate)

然后我基本上从源中的数据流任务中的5天中取回数据。      从表格中选择*      where(getdate() - 5和getdate之间的CreatedOn)      或(在getdate() - 5和getdate之间的ModifiedOn

然后我在SSIS中使用Lookup Not Matched转换来恢复所有新行。这意味着不必使用拆分条件处理更新。正在删除的行已被修改,然后使用“未匹配”插入,以恢复源中但不在目的地中的数据。

只是想知道人们对此的看法是什么,有什么我错过了。我做了一些基本测试,数据看起来还可以。但我很好奇为什么这并没有真正记录为增量加载的方法。

只是想要你的想法以及是否有人尝试过这种方法?

谢谢

0 个答案:

没有答案