【发布时间】:2014-07-28 04:55:09
【问题描述】:
我有一个 java 程序,它处理一个包含 100 万条记录的文件,并使用批量插入将其插入到表中,即在每 1000 条记录之后使用Statement.addbatch() 和Statement.executeBatch()。程序运行得很快。
但是,如果存在重复记录,即表引发异常,则整个批次都将消失,其余记录将无法跟踪。
即使我得到 updatecount() 也无济于事,因为我无法将重复项插入另一个表等。
有没有一种方法,在 1000 个特定的批次插入中,如果有坏记录,那么该批次中的每条记录都可以一个一个地处理,以便可以将坏/重复记录放在另一个表中,并且常规表中的非重复项?
还有其他我可以使用的课程吗?我知道在 C++ 中,Oracle 提供 OCI 可以处理批处理中的单个记录(称为主机数组操作),但在 Java 中,批量插入通常由循环中的Statement.adding 完成,然后使用Statement.executeBatch() 插入。
谢谢。
【问题讨论】:
-
您可以在批处理旁边的某个容器中收集这 1000 个值,如果批处理失败,您自己一个一个运行它们,不是吗?如果批处理成功,则清除容器并进入下一个 1000
标签: java prepared-statement ojdbc batch-insert