今天同事遇到一问题,表中数据出现重复,主键没起作用,唯一性索引被破坏。在满带疑惑分析问题的时候,同事告之,对方是用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
慎用 OracleBulkCopy
最新推荐文章于 2023-11-02 17:23:16 发布