我正在寻找一个解决方案来执行插入,重复键更新如SQL Server 2005中的操作。此操作可能会插入或更新大量的条目。 SQL Server 2008有一个整洁的操作MERGE,它可以完美地完成,问题是我们坚持使用SQL Server 2005.
我已经研究过标准解决方案,但它们都不是很好,因为他们认为只有一个条目被更新/插入。
有谁知道一种方法来复制早期版本的SQL Server MERGE行为?SQL Server 2005批量更新或插入
4
A
回答
6
Alex Kuznetsov's blog包含使用UPDATE
语句的OUTPUT
子句的建议。用该博客条目的例子(未经测试)解释:
DECLARE @updated_ids table(id int)
UPDATE table
SET ...
OUTPUT inserted.id INTO @updated_ids
FROM table INNER JOIN data-to-insert ON table.id = data-to-insert.id
INSERT INTO table
SELECT ...
FROM data-to-insert
WHERE id NOT IN (SELECT id FROM @updated_ids)
+0
我必须开始更多地使用OUTPUT子句! – 2011-02-17 15:10:00
+2
有关性能的注意事项,如果将主键添加到表变量,它会显着加快执行速度。对我来说,它将100k行的插入/更新的执行时间从4分钟减少到〜6秒。 'declare @updated_ids table(id int PRIMARY KEY CLUSTERED)' – Tr1stan 2012-01-31 13:05:36
相关问题
- 1. SQL Server 2005 - 批量插入失败
- 2. 批量插入到SQL Server 2005中
- 3. SQL Server 2005的批量插入
- 4. 在SQL Server 2005中批量插入?
- 5. 批量插入到SQL Server 2005问题
- 6. 如何在SQL Server 2005中插入(更新或插入)
- 7. 插入或更新通过SQL Server中的行(批量)
- 8. 批量插入SQL Server
- 9. SQL Server的批量插入
- 10. 批量插入或更新与休眠?
- 11. 在Sql Azure上批量插入更新
- 12. 批量更新SQL Server C#
- 13. SQL Server 2005的批量插入二进制类型
- 14. SQL Server 2005批量插入不存在的拆分字符串
- 15. Slick 3.0批量插入或更新(upsert)
- 16. NHibernate批量插入或更新
- 17. SQL Server 2005 - 大容量插入问题
- 18. 快速批量插入/更新与SQL Server 2008和BCP
- 19. 更新并插入批量移动(SQL Server)
- 20. Sql Server 2005 - 插入更新触发器 - 获取更新,插入行
- 21. 休眠批量插入,批量更新
- 22. SQL Server 2005插入图像
- 23. 插入到SQL Server 2005中
- 24. SQL Server 2005表变量更新问题
- 25. 更新大量的行 - SQL Server 2005
- 26. 使用sql server,asp.net批量插入
- 27. SQL Server 2008:批量插入永久
- 28. 批量从Excel插入到SQL Server中
- 29. 从SQL Server中的XML批量插入
- 30. SQL Server 2008:批量插入表
什么是SQL Server * 2003 *? – Heinzi 2010-01-19 09:52:01
我的不好,我的意思是版本2005 – 2010-01-19 09:56:20