[英]Insert C# table data into a SQL Server table
無論如何使用存儲過程將C#中的System.Data.DataTable批量插入到SQL Server表中並將此表作為參數傳遞?
該表沒有固定數量的記錄。
是的有一種方法:
DataTable dataTable = null; // your data needs to be here
try
{
ConnectionStringSettings mConString = ConfigurationManager.ConnectionStrings["SiteSqlServer"];
// Optional truncating old table
using (SqlConnection connection = new SqlConnection(mConString.ConnectionString))
{
connection.Open();
// Delete old entries
SqlCommand truncate = new SqlCommand("TRUNCATE TABLE MYTABLE", connection);
truncate.ExecuteNonQuery();
}
SqlBulkCopy bulkCopy = new SqlBulkCopy(mConString.ConnectionString, SqlBulkCopyOptions.TableLock)
{
DestinationTableName = "dbo.MYTABLE",
BatchSize = 100000,
BulkCopyTimeout = 360
};
bulkCopy.WriteToServer(dataTable);
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
請體驗BatchSize - 100000對我有好處 - 它不應該大於此 - 否則速度遷移減少。 BatchSize不限制您的數據 - 它只是將發送到sql server的每個“數據包”的大小。
SiteSQLServer應位於app.config或web.config中。 如果沒有,您需要在此處更改參數。
請將MYTABLE更改為您的表名。
在2008年之前的SQL Server版本中,將整個DataTable推送到SQL Server的唯一方法是SqlBulkCopy 。 您必須將所有數據推送到(可能是臨時的)臨時表中,並調用該過程來處理分階段數據。
在SQL Server 2008中,引入了表值用戶定義類型。 它們提供了一些很好的新選項來處理數據集。
看看MSDN:
在我的兩篇博文中可能只有一秒:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.