jdbc的batch批处理操作与事务临时表怎么联合使用

qq_24992289 2016-08-23 04:38:03
本人在做一个excel导入的操作,java端将数据存储到临时表中,然后再对临时表进行校验插入到正式表中,由于数据量较大,对时间也有一定的要求,所以使用了batch批处理,一万条执行一次,但是这种操作每次执行时会自动调用commit提交,这样就会将临时表中的数据清空,请问大神们有什么解决的好办法吗?
...全文
224 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_24992289 2016-08-26
  • 打赏
  • 举报
回复
引用 5 楼 jdsnhan 的回复:
要是用临时表,那就别中途提交了,全部插入临时表后,一次性提交。否则,数据一致性如何保障呢。
数十万的数据,如果一次性提交会比较慢,他有一个临界值,如果数据量大的情况下估计会影响速度的。
qq_24992289 2016-08-26
  • 打赏
  • 举报
回复
引用 4 楼 wmxcn2000 的回复:
如是用 java 来操作数据库的话,不建议使用临时表,你每执行的一个语句,默认情况下都会执行一下 commit ; 等你第二次调用时,可能是一个新会话了,这个临时表的优势就没有了; 建议,你使用普通表,写数据是加一个标记列,可以区分不同的用户;
这个考虑到数据量比较多,所以采用的临时表
qq_24992289 2016-08-26
  • 打赏
  • 举报
回复
用的batchupdate处理的,不用commit提交,就是速度优化上慢了一些
jdsnhan 2016-08-24
  • 打赏
  • 举报
回复
要是用临时表,那就别中途提交了,全部插入临时表后,一次性提交。否则,数据一致性如何保障呢。
卖水果的net 2016-08-24
  • 打赏
  • 举报
回复
如是用 java 来操作数据库的话,不建议使用临时表,你每执行的一个语句,默认情况下都会执行一下 commit ; 等你第二次调用时,可能是一个新会话了,这个临时表的优势就没有了; 建议,你使用普通表,写数据是加一个标记列,可以区分不同的用户;
ghx287524027 2016-08-23
  • 打赏
  • 举报
回复
引用 2 楼 qq_24992289 的回复:
[quote=引用 1 楼 ghx287524027 的回复:] 临时表设置为 on commit preserve rows (会话级临时表:会话结束时删除数据)
由于我的这个导入存在多用户同时操作,存在这种并发的,会不会有影响呀[/quote] 并发和临时表的形式没有关系。但是并发操作不会造成死锁或者产生读写不一致吗?
qq_24992289 2016-08-23
  • 打赏
  • 举报
回复
引用 1 楼 ghx287524027 的回复:
临时表设置为 on commit preserve rows (会话级临时表:会话结束时删除数据)
由于我的这个导入存在多用户同时操作,存在这种并发的,会不会有影响呀
ghx287524027 2016-08-23
  • 打赏
  • 举报
回复
临时表设置为 on commit preserve rows (会话级临时表:会话结束时删除数据)

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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