zoukankan      html  css  js  c++  java
  • SqlBulkCopy 批量插入

    /// <summary>
            /// 批量插入数据
            /// </summary>
            /// <param name="pConnectstring"></param>
            /// <param name="dt"></param>
            /// <param name="tablename"></param>
            public static void BulkCopy(string pConnectstring, DataTable dt, string tablename, int pBatchSize = 10000)
            {
                Console.WriteLine("使用Bulk插入的实现方式");
                Stopwatch sw = new Stopwatch();//测量运行时间
    
                using (SqlConnection conn = new SqlConnection(pConnectstring))
                {
                    SqlBulkCopy bulkCopy = new SqlBulkCopy(conn);
                    bulkCopy.DestinationTableName = tablename;//表名
                    bulkCopy.BatchSize = pBatchSize;//SqlBulkCopy.BatchSize=10*10000 时候的效率最高~  数据一百W为例
                    //bulkCopy.SqlRowsCopied += BulkCopy_SqlRowsCopied;
                    conn.Open();
                    sw.Start();
    
                    if (dt != null && dt.Rows.Count != 0)
                    {
                        bulkCopy.WriteToServer(dt);
                        sw.Stop();
                    }
    
                    Console.WriteLine(string.Format("插入{0}条记录共花费{1}毫秒", dt.Rows.Count, sw.ElapsedMilliseconds));
                }
            }

    调用上面方面即可实现SqlBulkCopy 批量插入 

    SqlBulkCopy  优点

           1.效率高

           2.操作简洁

    SqlBulkCopy  注意事项

        1.列的顺序必须和表的顺序一致

           2.插入时做不到添加查重

           3.当表中有自增列时 datatable表中必须含有自增列不用添加值

        

  • 相关阅读:
    .NET总结
    gzip压缩输出
    矩阵 快速幂
    Mock单元测试
    mysql乱码原因之一
    写个android下倒计时软件
    linux gcc下实现简单socket套接字小程序
    gcc下MD5破解
    #1045 Access denied for user 'root'@'localhost'
    转android四种动画
  • 原文地址:https://www.cnblogs.com/manwwx129/p/SqlBulkCopy.html
Copyright © 2011-2022 走看看