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;

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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值