[.Net码农]SqlBulkCopy的几点注意事项

转:http://blog.163.com/xiong1000@126/blog/static/218930920107240184853/



SqlBulkCopy 非常好用这一点毋庸置疑,效率肯定是比INSERT ...SELECT 要高个几倍。

不过刚开始我遇到很多问题。

会报运行时异常:“给定的 ColumnMapping 与源或目标中的任意列均不匹配”的处理方法

是因为在这里大小写是完全限定的包括表名和Columnname全部是严格大小写

源列“kl_zj”的区域设置 ID“1033”和目标列“kl_zj”的区域设置 ID“2052”不匹配。

是因为 你修改该表的时候有一个“排序规范”必须保持源定义和目标保持一致

例子如下

string connectionString = txtString.Text;
        string strSQL = "select hth,khmc,khdm,kl_zj,sj_zj,ywy,bm,htlx,qdrq,ywgs from gghtb";
        using (SqlConnection sourceConnection = new SqlConnection(connectionString))
        {
            //源地址
            SqlCommand myCommand = new SqlCommand(strSQL,sourceConnection);
            sourceConnection.Open();
            SqlDataReader reader = myCommand.ExecuteReader();

            //目的
            using (SqlConnection destinationConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["SBSCRMConnectionString"].ConnectionString))
            {
                destinationConnection.Open();
                using (SqlBulkCopy bulkCopy = new SqlBulkCopy(destinationConnection.ConnectionString))
                {
                    bulkCopy.BatchSize = 500;
                    bulkCopy.DestinationTableName = "History_gghtb";
                    bulkCopy.WriteToServer(reader);
                }

            }

            reader.Close();//关闭

        }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值