今天同事遇到一问题,表中数据出现重复,主键没起作用,唯一性索引被破坏。在满带疑惑分析问题的时候,同事告之,对方是用oracleBulkCopy插入的数据。
这个东西是ORACLE为ODP(Oracle Data Provider for .NET )写的为快速写入数据的一个框架。采用的是直接装载机制,区别于传统的insert。
OracleBulkCopy 没有唯一性判断,破坏主键,不支持事务,不生成redo。
重建索引,删除重复数据都无效,只能删除、重建表。
你做的挺开心,也不管我们吃着牙碜不牙碜。。。
给了同事4个建议:
1、在设置DataTable之前调用序列,保证序列是唯一性主键
2、把数据插入到临时表,在临时表中去重后,写入正式表
3、DataTable中去重,保证插入的数据是干净的
4、不用OracleBulkCopy了。
这个东西的使用有局限性,慎用啊、慎用啊、慎用啊。尤其是生产环境
附其用法的官方文档:
http://docs.oracle.com/html/E10927_01/OracleBulkCopyClass.htm
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




