C#中使用SqlBulk百万级数据秒级插入
生活随笔
收集整理的這篇文章主要介紹了
C#中使用SqlBulk百万级数据秒级插入
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
本文轉(zhuǎn)自這篇文章,提供了一種較快的數(shù)據(jù)插入的思路,轉(zhuǎn)過來做個記錄。?
#region static void Insert() {Console.WriteLine("使用Bulk插入的實(shí)現(xiàn)方式");Stopwatch sw = new Stopwatch();DataTable dt = GetTableSchema(); using (SqlConnection conn = new SqlConnection(StrConnMsg)){SqlBulkCopy bulkCopy = new SqlBulkCopy(conn);bulkCopy.DestinationTableName = "Product";bulkCopy.BatchSize = dt.Rows.Count;conn.Open();sw.Start();for (int i = 0; i < totalRow;i++ ){DataRow dr = dt.NewRow();dr[0] = Guid.NewGuid();dr[1] = string.Format("商品", i);dr[2] = (decimal)i;dt.Rows.Add(dr);}if (dt != null && dt.Rows.Count != 0){bulkCopy.WriteToServer(dt);sw.Stop();}Console.WriteLine(string.Format("插入{0}條記錄共花費(fèi){1}毫秒,{2}分鐘", totalRow, sw.ElapsedMilliseconds, GetMinute(sw.ElapsedMilliseconds)));} } static DataTable GetTableSchema() {DataTable dt = new DataTable();dt.Columns.AddRange(new DataColumn[] { new DataColumn("Id",typeof(Guid)), new DataColumn("Name",typeof(string)), new DataColumn("Price",typeof(decimal))});return dt; } #endregion運(yùn)行結(jié)果如下:?
插入100w條記錄才8s多。打開Sqlserver Profiler跟蹤,會發(fā)現(xiàn)執(zhí)行的是如下語句:?
insert bulk Product ([Id] UniqueIdentifier, [NAME] VarChar(50) COLLATE Chinese_PRC_CI_AS, [Price] Decimal(18,2))?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的C#中使用SqlBulk百万级数据秒级插入的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用委托来实现IEqualityCompa
- 下一篇: centos7利用nexus离线搭建局域