oracle转存200张表,浅谈oracle数据库怎么高效将大量数据从一张表迁移到另一张表...

1.需求

将百万级以上的数据从A表迁移到B表里面,B表本来就存在的记录,就做更新操作,B表之前不存在的记录,就做插入操作

2.分析

首先,一般来说,有些人会在java代码里面实现,先将需要更新和插入的数据分别查询出来,再使用oracle的batchUpdate这个方法,一般来说,这个效率也是不错的,但是,由于oracle数据库的batchUpdate这个批量执行的方法是不会返回执行成功的条数的,由于无法知道执行的结果,风险不可预估,一般不会采取这种方法!如果要一条一条去执行,效率实在是太低.

既然batchUpdate行不通,那么有什么好办法呢?经过本人的一番百度,终于找到了一个方法,那就是使用merge into,直接在数据库解决问题.这种方法非常高效,而且执行过程中如果遇到失败,执行会终止,且会抛出错误.换句话说,不报错,即表示全部执行成功,提交事务即可生效.

3.实现

假如有A表,A表有FA1,FA2,FA3,FA4.....n个字段,F1为主键,有B表,B表有FB1,FB2,FB3,FB4...n个字段,FB1为主键,需要将A表的数据迁移到B表中

直接可以这么写

MERGE INTO B T1

USING (SELECT * FROM A ) T2  ON (T1.FB1 = T2.FA1 )

WHEN MATCHED THEN

UPDATE B SET T1.FB2= T2.FA2,T1.FB3= T2.FA3,T1.FB4=T2.FA4

WHEN NOT MATCHED THEN

INSERT(T1.FB1,T1.FB2,T1.FB3,T1.FB4) VALUES(T2.FA1,T2.FA2,T2.FA3,T2.FA4);

4.注意

1.更新时,主键不能更新

2.using 里面的那个查询语句是可以根据你的业务需求,添加where条件的,on里面的连接条件也是可以多个的,当主键是联合主键的时候,on里面可以写多个,用and连接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值