日期:2014-05-16 浏览次数:20427 次
由于要插入数据库的数据量过大,所以用到批量导入的方法,这个和以前分享的批量插入在本质上是不同,我主要研究的是数据集即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批量插入数据具体用法