others - SQL Server如何批量插入?

我尝试将行从一个表插入另一个表。


DECLARE @batch INT = 10000;



WHILE @batch > 0


BEGIN


BEGIN TRANSACTION



 INSERT into table2


 select top (@batch) *


 FROM table1



 SET @batch = @@ROWCOUNT



COMMIT TRANSACTION



END



它在前10,000个上成功插入。然后,我得到错误消息"Cannot insert duplicate key",它试图插入相同的主键。

时间: 原作者:

你需要某种方法来消除现有行,


INSERT into table2


 SELECT TOP (@batch) *


 FROM table1 t1


 WHERE NOT EXISTS (SELECT 1 FROM table2 t2 WHERE t2.id = t1.id);



原作者:
...