2012-01-14 64 views
2

我已經使用BulkCopy命令將行從一個表傳輸到另一個表,其中包含大約3到5百萬行的批量數據。我想更新這些行。是否有與SQL Server 2008中的BulkCopy類似的BulkUpdate命令

是否有任何類似於BulkCopy命令的BulkUpdate命令?我在C#中使用ASP.NET。

+0

這是T-SQL'UPDATE'命令....只是在基於集合的方法(而不是逐行)上執行更新操作,並在SQL Server上執行它們 - 不要拉下整個數據,更新它,然後發回。 – 2012-01-14 08:42:44

回答

4

不,沒有。

問:什麼是「紫膠」?

威力幫助:

http://itknowledgeexchange.techtarget.com/itanswers/bulk-update-in-sql-server-2005/

假設你有DISTICT值的列,來顯示哪 行是這兩個表之間這可以用一個簡單的 完成更新聲明。

UPDATE TableA 
SET TableA.A1 = TableB.B1, 
    TableA.A2 = TableB.B2 
FROM TableB 
WHERE TableA.A3 = TableB.B3 

如果你擔心創建一個龐大的交易,你可以 批量操作成小塊。這是通過TOP 關鍵字完成的。

UPDATE TOP (1000) TableA 
SET TableA.A1 = TableB.B1, 
    TableA.A2 = TableB.B2 
FROM TableB 
WHERE TableA.A3 = TableB.B3 
     AND TableA.A1 <> TableB.B1 
     AND TableA.A2 <> TableB.B2 

你可以把成一個圈......

這裏是另一個鏈接(基本一致的解決方案):

http://www.sqlusa.com/bestpractices2005/hugeupdate/

+2

http://en.wikipedia.org/wiki/Lakh – 2012-01-14 06:30:50

+0

@ todda.speot.is - 謝謝:) – paulsm4 2012-01-14 07:02:14

2

一種常見的方法這裏是:

  • 批量裝載(SqlBulkCopy的)到一個空*臨時表 - 這意味着:用正確的列/類型與實際數據的表,但不是主要的交易系統的一部分
  • 現在做一個更新加入了真實數據到臨時數據,在真實數據更新值
-1

免責聲明:我的項目Bulk Operations

批量操作圖書館的主人允許插入,刪除,更新和合並百萬在幾秒鐘內排成行。

如果您已經知道SqlBulkCopy類,那麼學習和使用非常容易。

var bulk = new BulkOperation(connection); 
// ... Mappings .... 

bulk.BulkUpdate(dt); 
相關問題