请教oracle中多次commit的问题

ZHGUY 2016-03-03 11:32:27
最近有个项目使用java往oracle内一次性插入50万多条数据。
在处理时,先把数据转换成sql,这样每次执行5000条sql时commit一次。
现在的问题是,在后面commit时,可能会发现数据出现业务上的错误。这时需要回滚,但只能回滚当前5000条执行的sql。
请问各位有没有什么好的思路可以全部回滚。
...全文
461 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
感觉骨灰级 2018-11-26
  • 打赏
  • 举报
回复
恩,有收获有收获
ArayChou 2016-03-04
  • 打赏
  • 举报
回复
另外,将一行数据处理为一条sql效率较低,可使用jdbc batch插入。或者Oracle的sqlldr。速度基本上只受io速度影响
xiaohuashenshou 2016-03-04
  • 打赏
  • 举报
回复
引用 3 楼 ArayChou 的回复:
全部插入到临时表,验证所有数据合法性,将不合法的数据扔给数据提供方核查。全部合法,再从临时表插入正式表
]这个方法比较好,而且如果是这么大批量的数据插入的话最好直接向dataFile中写入,这样的话效率就高很多了
ArayChou 2016-03-04
  • 打赏
  • 举报
回复
全部插入到临时表,验证所有数据合法性,将不合法的数据扔给数据提供方核查。全部合法,再从临时表插入正式表
ZHGUY 2016-03-04
  • 打赏
  • 举报
回复
是多个表总共50多万,数据是从第三方系统过来的,所以要验证合法性。如果一个不正确全部回滚
happy一个世纪 2016-03-04
  • 打赏
  • 举报
回复
50多万条,全部插入成功一次,得好几个小时吧?是单表吗,单表建议使用oracle sqlloder工具,先生成平面数据文件,试一次,只需十几秒,岂不美哉!

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧