最近做报表项目遇到一个棘手问题,需要把旧系统的30w条数据更新到oracle数据库中,旧系统的数据保存在excel里面,结构如下:
vipno | sss | ssss |
1 | aa | aaa |
2 | b | bbb |
... |
... | ... |
数据库的表t结构类似,但是我需要根据excel里面的vipno更新新oracle数据库sss 和 ssss列。其中t.vipno上建有索引
尝试过好几种方法,效率和工作量都不一样,特此记录下来
- 方法一
首先想到的方法是,大不了生成30w条update语句,一一更新每行数据呗,反正以前也这么干过。
直接在excel里面用CONCATENATE公式拼接出update语句,
update t set sss='aa', ssss='aaa' where vipno = '1';
一拉30w条update搞定。直接copy到PLSQL 窗口里,按Execute, 然后整个窗口卡在那里。后来我也尝试过1000条update,都会卡住。我已经对vipno去重,所以不应该出现重复update但未commit锁住的情况。