ADO.NET to SqlServer批量Insert

 实现步骤: 1,构造DataTable
        2,封装DataTable为DataTabl赋值
         3,利用SqlBulkCopy提交DataTable
代码:1,构造DataTable
      
 public DataTable BuildTable()
        {            try
            {
                DataTable dt = new DataTable();
                dt.Columns.AddRange(new DataColumn[] { new DataColumn("PointX", typeof(float))});
                dt.Columns.AddRange(new DataColumn[] { new DataColumn("PointY", typeof(float)) });
                dt.Columns.AddRange(new DataColumn[] { new DataColumn("PointType", typeof(string))});
                dt.Columns.AddRange(new DataColumn[] { new DataColumn("SbType", typeof(string)) });
                return dt;
            }
            catch (Exception ex)
            {
                LogHelp.WriteInLog("构造DataTable异常:" + ex.Message, true);
                return null;
            }
        }

   2,DataTabl赋值

        DataTable dt =BuildTable();
        dataRow dr = dt.NewRow(); 
        dr["PointX"] = x;      
        dr["PointY"] = y;     
        dr["PointType"] = "kk";   
        dr["SbType"] = "kk";     
        dt.Rows.Add(dr);


 

    3,提交DataTable
    
    public bool WriteToServer(DataTable dt)
        {
            try
            {
                OpenConn();
                using (SqlBulkCopy sqlBC = new SqlBulkCopy(sqlConn))
                {
                    sqlBC.BatchSize = 1000;        //设置逾时的秒数       
                    sqlBC.BulkCopyTimeout = 60;         //设置 NotifyAfter 属性,以便在每拷贝 10000 条记录至数据表后,呼叫事件处理函数      
                    sqlBC.NotifyAfter = 10000;
                    sqlBC.DestinationTableName = "目标表名";
                    sqlBC.ColumnMappings.Add("PointX", "PointX");
                    sqlBC.ColumnMappings.Add("PointY", "PointY");
                    sqlBC.ColumnMappings.Add("PointType", "PointType");
                    sqlBC.ColumnMappings.Add("SbType", "SbType");
                    sqlBC.WriteToServer(dt);
                }
                sqlConn.Dispose();
                return true;
            }
            catch (Exception ex)
            {
                LogHelp.WriteInLog("数据批量插入异常:" + ex.Message, true);
                return false;
            }
        }

 

万级控制在秒


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值