[英]How to most efficiently insert/update a few million rows in SQL Server?
我有一個程序正在讀取文本文件以更新/插入行。 我在下面嘗試了以下偽代碼方法。 這些都非常慢。 我直接在SQL Server本身上運行此代碼,這些過程都需要很多小時才能完成...
更新/插入語句的數量約為數百萬。 在.net c#中運行那么多SQL語句的最有效方法是什么?
// Insert/Update while reading text file
While (reader.read)
{
sql.ExecuteNonQuery();
}
要么...
// 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();
}
}
使用SqlBulkCopy類 。
使您可以有效地用另一個來源的數據批量加載SQL Server表。
Microsoft SQL Server包括一個流行的命令提示符實用程序bcp,用於將數據從一個表移動到另一個表,無論是在單個服務器上還是在服務器之間。 SqlBulkCopy類使您可以編寫提供類似功能的托管代碼解決方案。
還有其他方法可以將數據加載到SQL Server表中(例如,INSERT語句),但是SqlBulkCopy相對於它們具有顯着的性能優勢。 SqlBulkCopy類可用於僅將數據寫入SQL Server表。 但是, 數據源不限於SQL Server。 只要可以將數據加載到DataTable實例或使用IDataReader實例讀取,就可以使用任何數據源。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.