簡體   English   中英

如何最有效地在SQL Server中插入/更新幾百萬行?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM