我有没有标识列的数据库表。我们有从DB2到SQL Server的客户端数据,但是不幸的是DB2设计没有标识列。

现在,我们已经从源(DB2 / SQL Server)中插入,更新和删除了一些数据,这些数据我想使用某种增量加载概念加载到目标(SQL Server)中。

我在Dataflow任务中尝试了SSIS查找,但是简单地插入一条新记录需要花费大量时间。请注意,在“查找转换编辑器”中,我将所有“可用输入列”映射到可用“可用查找列”,因为没有标识列。我认为,这就是为什么要花时间。我的几张桌子有大约2000万条记录。

是否有任何更快的方法/方式可以做到这一点,特别是当表没有标识列时?是除外还是SQL合并会有所帮助?

除了SSIS,我愿意接受其他任何方法。

最佳答案

查找是SSIS需要一些时间,因此您可以使用ESQL Task并调用合并过程。
我认为您可以做的是使用合并过程,在那里您可以在源表中创建一列并更新该列中的记录,例如

merge desination
using
 {
 source columns from source s}
 join desination d
 on s.primarykey=d.primary key
when matched then
 s.updatedrecord=1
 when not matched then
 insert into desination columns.


从上面的查询中,您将插入新记录,并在updatedrecord列的帮助下更新记录,您可以将其成功更新或插入到目标表中。

您可以转到以下链接进行合并过程。

https://www.sqlservercentral.com/Forums/Topic1042053-392-1.aspx
https://msdn.microsoft.com/en-us/library/bb510625.aspx

关于sql-server - 如何在SQL Server中执行增量加载,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42597866/

10-12 00:16
查看更多