我有没有标识列的数据库表。我们有从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/