当前位置:   article > 正文

Oracle实现批量修改的两种方法_oracle分批更新数据

oracle分批更新数据

1、构建临时表进行主键关联更新
需求:T1表有千万级别的数据量,需要更新这个表的字段a,b满足2个条件的记录。
做法:一般业务会将条件通过excel表格提供给开发,那么开发首先需要将这个excel表格的内容插入到临时表T2中,考虑到a,b都不是主键,那么需要将a,b转化成主键后再插入到T2表中,T2表中还可以保存更新前的数据,方便做数据回滚,T2表中有数据后,就可以执行下面脚本进行更新操作:
ps:c,d是需要更新的操作,e,f是条件。必须强调的是id必须是主键

update (select T1.c,T1.d,T2.e,T2.f,T1.updated_by,T1.date_updated 
from T1,T2 where T1.id=T2.id) 
set T1.c=T2.e,
T1.d=T2.f,
T1.updated_by=user,
T1.date_updated=sysdate;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2、分批更新
同样的需要,更新的脚本如下:

begin
v_cursor for (select r from T1 group by r) loop
    update T1 
    set T1.c = (select T2.e from T2 where T2.id=T1.id),
    T1.d = (select T2.f from T2 where T2.id=T1.id)
    T1.updated_by=user,
    T1.date_updated=sysdate
    where T1.r=v_cursor.r;
end loop
end;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/816667
推荐阅读
相关标签
  

闽ICP备14008679号