SQLSERVER_SqlBulkCopy批量添加使用

直接上代码了

         static void Main(string[] args)
        {
            string conn = @"Initial Catalog=aaa;Data Source = 192.168.1.1; Integrated Security = False; User ID = sa; Password=123;MultipleActiveResultSets=True;Encrypt=False;TrustServerCertificate=False";

  
            SqlBulkCopyByDatatable(conn, "Permission", GetTableSchema());

        }

  

        static void SqlBulkCopyByDatatable(string connectionString, string TableName, DataTable dt)
        {
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                using (SqlBulkCopy sqlbulkcopy = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.UseInternalTransaction))
                {
                    try
                    {
                        sqlbulkcopy.DestinationTableName = TableName;
                        for (int i = 0; i < dt.Columns.Count; i++)
                        {
                            sqlbulkcopy.ColumnMappings.Add(dt.Columns[i].ColumnName, dt.Columns[i].ColumnName);
                        }
                        sqlbulkcopy.WriteToServer(dt);
                    }
                    catch (System.Exception ex)
                    {
                        throw ex;
                    }
                }
            }
        }

  

 sstatic DataTable GetTableSchema()
        {
            DataTable dt = new DataTable();
            dt.Columns.AddRange(new DataColumn[] {
 new DataColumn("Id",typeof(Guid)),
 new DataColumn("MenuID",typeof(Guid)),
  new DataColumn("MenuFunctionID",typeof(Guid)),
 new DataColumn("RoleID",typeof(Guid)),
  new DataColumn("UserId",typeof(Guid)),
 new DataColumn("PerStr",typeof(Boolean)),
  new DataColumn("ParentId",typeof(Guid)),
 new DataColumn("PlantId",typeof(Guid)),
  new DataColumn("CreateTime",typeof(DateTime)),
 new DataColumn("Remark",typeof(string)),
  new DataColumn("UpdateTime",typeof(DateTime)),
 new DataColumn("DeleteState",typeof(int)),
 new DataColumn("CreateUserId",typeof(Guid)),
  new DataColumn("CreateUserName",typeof(string)),
  new DataColumn("UpdateUserId",typeof(Guid)),
 new DataColumn("UpdateUserName",typeof(string))});

            for (int i = 0; i < 101; i++)
            {
                DataRow dr = dt.NewRow();
                dr[0] = Guid.NewGuid();
                dr[1] = Guid.NewGuid();
                dr[2] = Guid.NewGuid();
                dr[3] = Guid.NewGuid();
                dr[4] = Guid.NewGuid();
                dr[5] = true;
                dr[6] = Guid.NewGuid();
                dr[7] = Guid.NewGuid();
                dr[8] = DateTime.Now;
                dr[9] = "备注";
                dr[10] = DateTime.Now; ;
                dr[11] = (int)i;
                dr[12] = Guid.NewGuid();
                dr[13] = "测试";
                dr[14] = Guid.NewGuid();
                dr[15] = "测试2";
                dt.Rows.Add(dr);
            }

            return dt;
        }

  //下面的案例是带Stopwatch 测试耗时

        static void Insert()
        {
            Console.WriteLine("跑批开始");
            int tol = 1020000;
            Stopwatch sw = new Stopwatch();
            DataTable dt = GetTableSchemas();
            using (SqlConnection conn = new SqlConnection("Initial Catalog=SchneiderETO;Data Source=192.168.1.205;Integrated Security=False;User ID=eto;Password=123;MultipleActiveResultSets=True;Encrypt=False;TrustServerCertificate=False"))
            {
                try
                {


                    SqlBulkCopy bulkCopy = new SqlBulkCopy(conn);
                    SqlCommand cmd = new SqlCommand();
                    cmd.CommandTimeout = 180;
                    bulkCopy.DestinationTableName = "aaaaa";
                    bulkCopy.BatchSize = dt.Rows.Count;
                    conn.Open();
                    sw.Start();
                    for (int i = 0; i < tol; i++)
                    {
                        DataRow dr = dt.NewRow();
                        dr[0] = Guid.NewGuid();
                        dr[1] = Guid.NewGuid();
                        dr[2] = Guid.NewGuid();
                        dr[3] = Guid.NewGuid();
                        dr[4] = Guid.NewGuid();
                        dr[5] = true;
                        dr[6] = Guid.NewGuid();
                        dr[7] = Guid.NewGuid();
                        dr[8] = DateTime.Now;
                        dr[9] = "备注";
                        dr[10] = DateTime.Now; ;
                        dr[11] = (int)i;
                        dr[12] = Guid.NewGuid();
                        dr[13] = "测试";
                        dr[14] = Guid.NewGuid();
                        dr[15] = "测试2";
                        dt.Rows.Add(dr);
                    }
                    if (dt != null && dt.Rows.Count != 0)
                    {
                        bulkCopy.WriteToServer(dt);
                        sw.Stop();
                    }
                    conn.Close();
                    Console.WriteLine(string.Format("插入{0}条记录共花费{1}毫秒,{2}分钟", tol, sw.ElapsedMilliseconds, GetMinute(sw.ElapsedMilliseconds)));
                    Console.ReadKey();
                }
                catch (Exception ex)
                {

                    throw new Exception(ex.Message);
                }
            }
        }

  表字段,与上面一样。

        static DataTable GetTableSchemas()
        {
            DataTable dt = new DataTable();
            dt.Columns.AddRange(new DataColumn[] {
 new DataColumn("Id",typeof(Guid)),
 new DataColumn("MenuID",typeof(Guid)),
  new DataColumn("MenuFunctionID",typeof(Guid)),
 new DataColumn("RoleID",typeof(Guid)),
  new DataColumn("UserId",typeof(Guid)),
 new DataColumn("PerStr",typeof(Boolean)),
  new DataColumn("ParentId",typeof(Guid)),
 new DataColumn("PlantId",typeof(Guid)),
  new DataColumn("CreateTime",typeof(DateTime)),
 new DataColumn("Remark",typeof(string)),
  new DataColumn("UpdateTime",typeof(DateTime)),
 new DataColumn("DeleteState",typeof(int)),
 new DataColumn("CreateUserId",typeof(Guid)),
  new DataColumn("CreateUserName",typeof(string)),
  new DataColumn("UpdateUserId",typeof(Guid)),
 new DataColumn("UpdateUserName",typeof(string))});



            return dt;
        }

  记录时间

        static int GetMinute(long l)
        {
            return (Int32)l / 60000;
        }

  

 

 

     

转载于:https://www.cnblogs.com/yuanye0918/p/7521258.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值