MSSQL:使用SqlBulkCopy將資料批次寫入資料庫
原址:https://demo.tc/post/283
Oracle:https://blog.csdn.net/baidu_27474941/article/details/71709420
//一開始我們先產生一個DataTable來裝我們要寫入的資料 DataTable dt = new DataTable(); dt.Columns.Add("id", typeof(int)); dt.Columns.Add("name", typeof(string)); //因為SqlBulkCopy的猛就是大量的一次寫入,所以我們也來跑10萬筆吧 int i; for (i = 0; i < 100000; i++) { DataRow dr = dt.NewRow(); dr["name"] = i.ToString(); dt.Rows.Add(dr); } //宣告連結字串 SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ASPNETDBConnectionString1"].ConnectionString); conn.Open(); //宣告SqlBulkCopy using (SqlBulkCopy sqlBC = new SqlBulkCopy(conn)) { //設定一個批次量寫入多少筆資料 sqlBC.BatchSize = 1000; //設定逾時的秒數 sqlBC.BulkCopyTimeout = 60; //設定 NotifyAfter 屬性,以便在每複製 10000 個資料列至資料表後,呼叫事件處理常式。 sqlBC.NotifyAfter = 10000; sqlBC.SqlRowsCopied += new SqlRowsCopiedEventHandler(OnSqlRowsCopied); //設定要寫入的資料庫 sqlBC.DestinationTableName = "dbo.Table1"; //對應資料行 sqlBC.ColumnMappings.Add("id", "id"); sqlBC.ColumnMappings.Add("name", "name"); //開始寫入 sqlBC.WriteToServer(dt); } conn.Dispose(); } void OnSqlRowsCopied(object sender, SqlRowsCopiedEventArgs e) { Response.Write("---<br/>"); }