Oracle批量update问题,一直是initializing状态

effietong 2018-03-28 06:18:53
需要根据一份excel里面的userid更新两列内容。数据量大概有30w行。大概结构如下:
USERID COL1 COL2
111 AA AAA
222 BB BBB
...
Oracle数据库里有一张类似的表t,但是需要根据excel的USERID 更新COL1,COL2.
我在excel里用拼接公式生成update语句,如下:
update t set COL1 = 'AA', COL2 = 'AAA' WHERE USERID = '111';
update t set COL1 = 'BB', COL2 = 'BBB' WHERE USERID = '222';
...

这样复制到PLSQL里面跑update语句,但是状态栏就会一直是initializing状态,等了很久都卡在那里,最后只能强行退出。我尝试过跑100多句是没问题的,语句是ok的。批量执行太多就不行了。

请各位大牛指教一下还有什么好办法可以批量更新。
...全文
946 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
effietong 2018-03-29
  • 打赏
  • 举报
回复
嗯,我把update语句放到BEGIN, END 代码块里面执行。现在至少界面不会卡住, 一直在执行。一万行数据用了113s,还可以接受。
Begin
update....;
commit;
update...;
commit;
End;
码农者也 2018-03-29
  • 打赏
  • 举报
回复
每一条update语句之后都跟一个commit,这样能释放资源
effietong 2018-03-29
  • 打赏
  • 举报
回复

补充张图片,卡住的界面是这样
effietong 2018-03-29
  • 打赏
  • 举报
回复
update里面的userid没有重复的,这个我已经去重数据了。 我也试过每句update后面加commit。也还是不行。。。卡住状态
  • 打赏
  • 举报
回复
锁表了吧。。。。。。。

17,086

社区成员

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

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