需要根据一份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的。批量执行太多就不行了。请各位大牛指教一下还有什么好办法可以批量更新。

解决方案 »

  1.   

    update里面的userid没有重复的,这个我已经去重数据了。 我也试过每句update后面加commit。也还是不行卡住状态
      

  2.   

    嗯,我把update语句放到BEGIN, END 代码块里面执行。现在至少界面不会卡住, 一直在执行。一万行数据用了113s,还可以接受。
    Begin
    update....;
    commit;
    update...;
    commit;
    End;
      

  3.   

    每一条update语句之后都跟一个commit,这样能释放资源