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

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

[csharp][/csharp] view plaincopy

  1. private static void Insert(DataTable dt)
  2.  {
  3.      using (System.Data.SqlClient.SqlBulkCopy sqlBC = new System.Data.SqlClient.SqlBulkCopy  (DAL.DatabaseHelper.GetConnectionString()))
  4.      {
  5.          sqlBC.BatchSize = 100000;
  6.          sqlBC.BulkCopyTimeout = 60;
  7.          sqlBC.DestinationTableName = “B2BFORM008_DETAIL_IMPORT”;
  8.          sqlBC.ColumnMappings.Add(“FORM_NO”, “FORM_NO”);
  9.          sqlBC.ColumnMappings.Add(“工号”, “EMP_NO”);
  10.          sqlBC.ColumnMappings.Add(“姓名”, “EMP_NAME”);
  11.          sqlBC.ColumnMappings.Add(“分类”, “CLASS”);
  12.          sqlBC.ColumnMappings.Add(“职位”, “POSITION_DESC”);
  13.          sqlBC.ColumnMappings.Add(“牌级”, “PAILEVEL”);
  14.          sqlBC.ColumnMappings.Add(“工龄段”, “WORK_AGE”);
  15.          sqlBC.ColumnMappings.Add(“区域”, “AREA”);
  16.          sqlBC.ColumnMappings.Add(“类别”, “DATA_TYPE”);
  17.          sqlBC.ColumnMappings.Add(“金额”, “AMOUNT”);
  18.          sqlBC.ColumnMappings.Add(“发放次数”, “TIMES”);
  19.          sqlBC.ColumnMappings.Add(“当月”, “THIS_MONTH_AMOUNT”);
  20.          sqlBC.ColumnMappings.Add(“次月”, “NEXT_MONTH_AMOUNT”);
  21.         sqlBC.ColumnMappings.Add(“次次月”, “MONTH_AFTER_NEXT_AMOUNT”);
  22.          sqlBC.ColumnMappings.Add(“备注”, “REMARK”);
  23.          sqlBC.WriteToServer(dt);
  24.      }
  25.  }

标签