【发布时间】:2014-03-18 09:20:09
【问题描述】:
我想使用 .net 将超过 25000 行数据批量插入(或更新,如果记录存在)到 SQL Server 数据库中。哪种方法最适合我?
例如:
如果我将数据发送到数据库,它应该插入/更新这些记录。
【问题讨论】:
-
使用 DataAdapters 执行批处理操作 - msdn.microsoft.com/en-us/library/aadf8fk2%28v=vs.110%29.aspx
-
批量操作不支持检查现有行。您应该做的是 (1) 将您的行批量插入到临时表中 - 所有这些行,然后 (2) 将该临时表与您拥有的真实表进行比较并插入新行,更新现有行。批量操作就是这样做的——批量加载数据,不检查、不比较、不进行其他操作——但它的速度非常快。
-
SQL server 版本:从SQL Server 2008开始,现在可以使用MERGE SQL命令;因此您可以使用 SqlBulkCopy 批量加载到暂存中,然后在合并后有效地插入/更新。不要为此使用 linq-to-sql,因为它在基于批处理的操作上非常缓慢
标签: c# .net sql-server linq linq-to-sql