簡體   English   中英

將C#表數據插入SQL Server表

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

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