我在SourceDB(SQL Server數據庫)中有一個表tblSource,在TargetDB(SQL Server數據庫)中有一個表tblTarget。來自tblSource的數據必須移至tblTarget。 tblSource有位域來指示哪些數據被移動到tblTarget,所以當行被複制到tbltarget時,必須設置該標誌。我需要在C#中完成,但仍歡迎T-SQL的建議。我的問題是什麼都是可能的解決方案,哪個是最好的方法?複製表中的數據並更新它
回答
您可以使用TSQL MERGE
語句,該語句將刪除在每一行上保留標誌的需要。
這可以從C#執行(如果需要的話)或包裝在存儲過程中。如果它們位於不同的服務器實例中,則可以創建鏈接服務器。
我會爲此使用SQLBulkCopy類。我過去使用過它,並且運氣好。它足夠快速和易於使用。在這個鏈接上有很多示例代碼來幫助你開始。
是否有任何理由爲什麼一個簡單的INSERT不是一個選項?
INSERT INTO tblTarget (destcol1, destcol2)
SELECT (sourcecol1, sourcecol2) FROM tblSource
這兩個表都在不同的分貝(沒有鏈接的服務器) – Arnet11 2012-07-04 04:40:42
合併會爲你工作,如果在SQL Server 2008中 OUTPUT將爲您的工作與SQL Server 2005+。
您需要更新記錄以將您的位標誌和OUTPUT INSERTED *設置到目標表中。
只有當您計劃將選定記錄插入目標表時,纔可以考慮輸出選定的記錄。
這在性能方面很好,因爲這種技術需要SQL Server只遍歷記錄一次。
查看這些鏈接瞭解如何使用OUTPUT。
http://msdn.microsoft.com/en-us/library/ms177564.aspx & & http://blog.sqlauthority.com/2007/10/01/sql-server-2005-output-clause-example-and-explanation-with-insert-update-delete/
tblTarget是在不同的數據庫(沒有鏈接服務器),將合併仍然工作? – Arnet11 2012-07-04 04:39:54
- 1. 複製表數據並填充新列
- 2. mysql中數據的複製/更新
- 3. 更新複製數據庫
- 4. 將多行數據複製到另一個表中並更新舊錶中的複製行
- 5. 在數據庫中更新變量值(它被複制)
- 6. 限制數量的複選框,並根據它們的值更新字符串
- 7. 與子查詢更新表,並複製
- 8. 複製數組並根據它進行
- 9. 複製表格中的數據並更改值
- 10. mySQL同步兩個表中的某些行 - 複製數據並更新
- 11. 從數據表複製新記錄並識別舊記錄中的更改
- 12. 複製並更新公式
- 13. 複製SQL Server 2008數據庫並重新命名它
- 14. 根據列值複製行並在複製後更新列
- 15. Highchart複製圖表上的數據而不是刷新它
- 16. 根據更改的列表複製並粘貼到新工作表中
- 17. 複製並更新數組值更新原始數組值javascript
- 18. 複製數據,並從同一個表,並在Django在一列更改複製的數據值指定的值
- 19. 將值從 - 更改爲+並將它們複製到新工作表中
- 20. 如何複製數據,更改一列,還更新相關表?
- 21. 過濾數值並將數據複製到新工作表
- 22. VBA:每週更新的儀表板。複製Trendline的數據。 EXCEL
- 23. SQL:比較表數據,並更新表
- 24. VBA在同一張表中複製數據透視表並使用它
- 25. 更新數據庫中的數據並加入3個表
- 26. 更新表中的數據
- 27. 更新列表並重新打印它?
- 28. 複製3個表並更改它們的名稱
- 29. 複製相同的數據幀n次並將它們保存到列表中
- 30. 將數據傳遞給ViewPager中的片段並更新它
tblTarget是在不同勢DB(無鏈接的服務器),將合併還能用嗎? – Arnet11 2012-07-04 04:39:43
是的,它應該更容易。只需在數據庫名稱前添加SQL即可,例如而不是dbo.Table1,使用Database1.dbo.Table1 – 2012-07-04 10:32:55