我正在尋找一個解決方案來執行插入,重複鍵更新如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