当前位置:  开发笔记 > 编程语言 > 正文

SqlBulkCopy有什么缺点

如何解决《SqlBulkCopy有什么缺点》经验,为你挑选了2个好方法。

我已经做了一些研究"用C#将大量数据插入数据库的麻烦方式",然后很多人建议我使用SqlBulkCopy.在我尝试之后,它真的让我很惊讶.毫无疑问,SqlBulkCopy非常快.看来SqlBulkCopy是插入数据(特别是大数据)的完美方式.但是为什么我们不要一直使用它.使用SqlBulkCopy有什么缺点吗?



1> David Catrie..:

SqlBulkCopy也适用于Oracle v11,但它是由安装Oracle Client时获得的Oracle .NET程序集提供的.SqlBulkCopy类基本上由目标数据库引擎的提供者逐个实现.

但是有一个巨大的缺点 - 绝对没有错误报告.例如,如果您更新了DataSet中的数据,正在使用适配器将其刷新回DB,并且存在密钥违规(或任何其他故障),则罪魁祸首DataRows将.HasErrors设置为true,您可以在引发异常消息时将其添加到异常消息中.

使用SqlBulkCopy,您只需获取错误的类型即可.祝你好运调试吧.


+1完全同意调试是BulkCopy的问题.我的一种方法是"解构"失败的BulkCopy命令并在finally块中逐行插入.这样我就可以将错误的DataRow定位为错误报告的一部分.

2> Michiel Budd..:

我能想到的两个原因:

    据我所知,它仅适用于Microsoft SQL Server

    在许多正常工作负载中,您不会执行批量操作 insert,但偶尔会insert混合使用selects和updates.insertSqlBulkCopyMSDN页面上,Microsoft自己声明正常更有效 .

请注意,如果您希望a SqlBulkCopy等同于普通插入,至少您必须将SqlBulkCopyOptions.CheckConstraints参数传递给它.


@BarryKaye:不,不是.名称是"批量复制",因此您应该复制已经知道约束条件正确的数据,如果不是,那么您不知道自己在做什么...... :)
推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有