c# - 如何通过 ADO.NET 加快向表中插入多行的速度?

标签 c# sql-server

我有一个包含 5 列的表:AcctId (int)、Address1 (varchar)、Address2 (varchar)、Person1 (varchar)、Person2 (varchar)。我正在生成随机数据以通过 C# 控制台应用程序插入到此表中。我试过通过 SQL-Server 进行这种随机数据插入,但认为这不是一个好的解决方案——SQL 不能很好地随机地逐行插入数据。生成随机数据——其中 975k 行——花费的时间最少。它在自定义对象列表中。

我需要获取这个随机数据并用新的随机数据更新数据库中的许多行。我尝试一次更新一行,由于在代码中重复搜索 List 对象,所以速度非常慢。所以我认为最好的方法是将所有随机数据放入数据库中的一个表中,然后更新所有使用该数据的其他表。 IE。 UPDATE t SET t.Address1=d.Address1 FROM Table1 t INNER JOIN RandomizedData d ON d.AcctId = t.Acct_ID。数据库非常不规范,因此 Acct 数据散布在各处。我无法控制标准化。

因此,在决定将所有随机数据插入到一个表中后,我着手创建插入脚本:

USE TheDatabase
Insert tmp_RandomizedData
 SELECT 1,'4392 EIGHTH AVE','','JENNIFER CARTER','BARBARA CARTER'  UNION ALL  
 SELECT 2,'2168 MAIN ST','HNGR F','DANIEL HERNANDEZ','SUSAN MARTIN'
// etc another 98 times... 
// FYI, this is not real data! 

我正在构建这个 INSERT 脚本,每批 100 个。运行每个插入平均需要 175 毫秒。这看起来是不是很久了?运行整个插件大约需要 35 分钟。

该表没有主键或任何索引。我计划在插入所有数据后添加这些数据(认为那样会更快)。

有更好的方法吗?

最佳答案

SQLBulkCopy .net 中的类可以很快地爆破记录。我用它非常快速地将数据从 i 系列数据库传输到 SQL 表。

关于c# - 如何通过 ADO.NET 加快向表中插入多行的速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2655205/

相关文章:

c# - 两个日期时间列表 - 搜索 "bumps"的链

c# - 使用 t4 模板在子文件夹中生成类

c# - 方法的类型参数无法从用法中推断出来。尝试明确指定类型参数

sql-server - 我如何在 where 语句中使用 Count(*)?

sql-server - 如何检查SQL列是否有值?

javascript - Node mssql更新查询,获取行数

c# - QuickFix/N 如何最好地处理多个 FIX 版本

sql-server - 使用sql server数据工具创建ssis包

python - 使用 Pymssql 将具有 Null 值的记录插入 SQL Server 时出错

c# - 根据角色限制用户可以做什么