SQL批量导入数据SqlBulkCopy的用法(适用于过万笔记录一次性插入数据库)

由于要插入数据库的数据量过大,所以用到批量导入的方法,这个和以前分享的批量插入在本质上是不同,我主要研究的是数据集即DataTable或DataSet等,如何批量插入数据库的,下面的方法可以维护数据源和表栏位的映射关系,用起来也很方便,做过五万笔数据测试,速度超快!

   private static void Insert(DataTable dt)
    {
        using (System.Data.SqlClient.SqlBulkCopy sqlBC = new System.Data.SqlClient.SqlBulkCopy  (DAL.DatabaseHelper.GetConnectionString()))
        {
            sqlBC.BatchSize = 100000;
            sqlBC.BulkCopyTimeout = 60;
            sqlBC.DestinationTableName = "B2BFORM008_DETAIL_IMPORT";
            sqlBC.ColumnMappings.Add("FORM_NO", "FORM_NO");
            sqlBC.ColumnMappings.Add("工号", "EMP_NO");
            sqlBC.ColumnMappings.Add("姓名", "EMP_NAME");
            sqlBC.ColumnMappings.Add("分类", "CLASS");
            sqlBC.ColumnMappings.Add("职位", "POSITION_DESC");
            sqlBC.ColumnMappings.Add("牌级", "PAILEVEL");
            sqlBC.ColumnMappings.Add("工龄段", "WORK_AGE");
            sqlBC.ColumnMappings.Add("区域", "AREA");
            sqlBC.ColumnMappings.Add("类别", "DATA_TYPE");
            sqlBC.ColumnMappings.Add("金额", "AMOUNT");
            sqlBC.ColumnMappings.Add("发放次数", "TIMES");
            sqlBC.ColumnMappings.Add("当月", "THIS_MONTH_AMOUNT");
            sqlBC.ColumnMappings.Add("次月", "NEXT_MONTH_AMOUNT");
           sqlBC.ColumnMappings.Add("次次月", "MONTH_AFTER_NEXT_AMOUNT");
            sqlBC.ColumnMappings.Add("备注", "REMARK");
            sqlBC.WriteToServer(dt);
        }
    }

你可能感兴趣的:(数据库)