日期:2014-05-16  浏览次数:20427 次

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);
            }
        }


详细用法请参照,SqlBulkCopy批量插入数据具体用法