C# 如何最有效地在SQL Server中插入/更新数百万行?
我有一个程序正在读取文本文件以更新/插入行。我尝试了下面的伪代码方法。这些都非常缓慢。我直接在SQL Server上运行这段代码,这些过程都需要很多小时才能完成 update/insert语句的数量约为数百万。在.net c#中运行这么多SQL语句最有效的方法是什么 或者 或者C# 如何最有效地在SQL Server中插入/更新数百万行?,c#,sql,insert,bigdata,C#,Sql,Insert,Bigdata,我有一个程序正在读取文本文件以更新/插入行。我尝试了下面的伪代码方法。这些都非常缓慢。我直接在SQL Server上运行这段代码,这些过程都需要很多小时才能完成 update/insert语句的数量约为数百万。在.net c#中运行这么多SQL语句最有效的方法是什么 或者 或者 // Build a list and run 1000 statements at one time While (reader.read) { List.Add(sql); if(List.Count =
// Build a list and run 1000 statements at one time
While (reader.read)
{
List.Add(sql);
if(List.Count == 1000)
{
sql.ExecuteNonQuery();
}
}
使用
使您能够高效地大容量加载SQL Server表,其中包含来自的数据
另一个来源
Microsoft SQL Server包括一个名为
用于将数据从一个表移动到另一个表的bcp,无论是在单个表上
服务器或服务器之间。SqlBulkCopy类允许您编写
提供类似功能的托管代码解决方案
有
将数据加载到SQL Server表中的其他方法(INSERT语句,
例如),但是SqlBulkCopy提供了显著的性能
优于它们。SqlBulkCopy类可用于写入数据
仅适用于SQL Server表。但是,数据源不受限制
到SQL Server;可以使用任何数据源,只要数据可以
加载到DataTable实例或使用IDataReader实例读取。
使用
使您能够高效地大容量加载SQL Server表,其中包含来自的数据
另一个来源
Microsoft SQL Server包括一个名为
用于将数据从一个表移动到另一个表的bcp,无论是在单个表上
服务器或服务器之间。SqlBulkCopy类允许您编写
提供类似功能的托管代码解决方案
有
将数据加载到SQL Server表中的其他方法(INSERT语句,
例如),但是SqlBulkCopy提供了显著的性能
优于它们。SqlBulkCopy类可用于写入数据
仅适用于SQL Server表。但是,数据源不受限制
到SQL Server;可以使用任何数据源,只要数据可以
加载到DataTable实例或使用IDataReader实例读取。
如果批量插入不是一个选项,那么您可以创建临时表并通过XML执行所有批量插入操作。这非常简单、快速和高效。如果批量插入不是一个选项,那么您可以创建临时表并通过XML执行所有批量插入操作。这也非常简单、快速和高效well@shaolinmonk,您不能将其用于更新,据我所知,您必须在临时表中插入数据,然后进行更新。请看:@sullimonk,您不能将其用于更新,据我所知,您必须在临时表中插入数据,然后进行更新。见:和
// build a list to loop through later and insert/update
While (reader.read)
{
List.Add(sql);
}
foreach(string s in sql)
{
sql.ExecuteNonQuery();
}
// Build a list and run 1000 statements at one time
While (reader.read)
{
List.Add(sql);
if(List.Count == 1000)
{
sql.ExecuteNonQuery();
}
}