相关疑难解决方法(0)

JDBC批量更新问题

我对Java-JDBC API以及Oracle数据库有一点点独特的要求.我有autoCommit是默认值,这对Oracle来说是正确的,我使用类似于此链接的示例.

但是,当我添加说1000批时,让我们说每个都是插入.让我们假设大约有20条记录违反了某些约束条件,我希望剩下的980条记录对数据库进行COMMITTED(以后对任何其他连接的任何其他查询都可见)并忽略20条记录.在上面的示例中,当一行违反任何事务时,即使我在catch块中提交,事务也只会提交直到第一次失败.

我知道批量更新只有在你相当确定所有行都会通过并且异常处理不是一个时才会完成,但是我打算修补现有数据库所以某种"不良做法"没问题:)任何代码示例都会非常感谢.

****更多细节****

使用简单插入/更新是不行的,因为我处理接近3M行,所以每1000条记录批处理.简单地在循环中添加1000个插入(忽略异常)会占用更多时间(每1000个记录大约5秒),而批量更新<300ms.

问题:对于Oracle数据库,驱动程序似乎在第一次失败时停止,即当1000行被批处理并且第100次失败时,我希望它继续直到第1000行.我认为这不能在JDBC中完成(使用Oracle)就像链接表明只有少数数据库支持这样的功能,可能Oracle不是一个

java jdbc batch-file

8
推荐指数
1
解决办法
2万
查看次数

标签 统计

batch-file ×1

java ×1

jdbc ×1