SqlBulkCopy 批量数据导入

if (SqlConn.State == ConnectionState.Closed)
           {
                SqlConn.Open();
            }

            //定义SQL事务并嵌入到批量拷贝的工作中
            SqlTransaction objSqlTran = SqlConn.BeginTransaction();

            //定义SqlBulkCopy:SqlConn为SqlConnection,SqlBulkCopyOptions枚举类型,objSqlTran为调用的事务
            SqlBulkCopy objSqlCopy = new SqlBulkCopy(SqlConn, SqlBulkCopyOptions.KeepIdentity, objSqlTran);

            //分批次拷贝的行数
            objSqlCopy.BatchSize = 10;
            objSqlCopy.BulkCopyTimeout = 240;
            //目标表名
            objSqlCopy.DestinationTableName = "DetailAccountReport";

            //源表对目标表字段的映射,因为默认是按顺序以及名字匹配,所以这步很重要
            objSqlCopy.ColumnMappings.Add("ProjectDefID", "ProjectDefID");
            objSqlCopy.ColumnMappings.Add("Num", "SumNum");
            objSqlCopy.ColumnMappings.Add("Money", "SumMoney");
            objSqlCopy.ColumnMappings.Add("Explain", "Explain");

            try
            {
                //将DataTabel类型的objDT作为源拷贝到目标表
                objSqlCopy.WriteToServer(objDT);
                objSqlTran.Commit();
            }
            catch
            {
                objSqlTran.Rollback();
            }
            finally
            {
                objSqlCopy.Close();
                SqlConn.Close();
            }

            return objDT;

posted @ 2010-05-27 12:44  刘览器  阅读(195)  评论(0)    收藏  举报