【问题标题】:Is there any BulkUpdate Command similar to BulkCopy in SQL Server 2008SQL Server 2008 中是否有类似于 BulkCopy 的 BulkUpdate 命令
【发布时间】:2012-01-14 06:15:15
【问题描述】:

我使用BulkCopy 命令将行从一个表传输到另一个表,其中包含大约 3 到 5 百万行的批量数据。我想更新这些行。

有没有类似于BulkCopy 命令的BulkUpdate 命令?我正在使用带有 C# 的 ASP.NET。

【问题讨论】:

  • 这是 T-SQL UPDATE 命令 .... 只需在基于集合的方法(而不是逐行)上执行更新操作,然后在 SQL Server 上执行 - 不要不要拉下整个数据,更新它,然后发回。

标签: c# sql-server sql-update sqlbulkcopy


【解决方案1】:

不,没有。

问:什么是“lac”?

可能有帮助:

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

假设您有一列包含不同值的列来显示哪个 行是两个表之间的行,这可以通过一个简单的 更新声明。

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】:

    这里常用的方法是:

    • 将 (SqlBulkCopy) 批量加载到空的 *staging 表中 - 意思是:将正确的列/类型作为实际数据的表,但不是主事务系统的一部分
    • 现在进行更新,将真实数据连接到暂存数据,以更新真实数据中的值

    【讨论】:

      【解决方案3】:

      免责声明:我是项目的所有者Bulk Operations

      批量操作库允许在几秒钟内插入、删除、更新和合并数百万行。

      如果您已经了解 SqlBulkCopy 类,它非常容易学习和使用。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-08
        相关资源
        最近更新 更多