C# 使用SqlBulkCopy將資料批次寫入資料庫

複製筆記,未整理.

//一開始我們先產生一個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("---");
}

這個網誌中的熱門文章

delivery note和delivery order的區別和翻譯

Eclipse 3.6.1 Helios 中文化方法

牙技專業英文--技工篇