oracle整张表格导入,oracle数据库中批量把一张表里面的数据插入到不同的表中的方法...

oracle数据库中批量把一张表里面的数据插入到不同的表中的方法(insert first into | insert all into)

准备环境

1.oracle数据库自带的scott下的用户表

2.跟emp表表结构相同的两张表,表名我定义为emp_a,emp_b

建表:

create table emp_a as select * from emp where 1 > 2; -- 只要表结构,不要表数据

create table emp_b as select * from emp where 1 > 2; -- 只要表结构,不要表数据

EMP表数据–

52325bfcf623733789eb62aa40e7005e.png

用法解析

insert first into: 这种方式表示要把数据分别插入到不同的表中,从上往下第一张表匹配成功的数据在下面的表中不会再进行二次匹配

-- 把emp表中部门大于等于30的数据插入到emp_a表中 --把部门大于等于20的数据插入到emp_b表中

insert first

when deptno >= 30 THEN

into emp_a

when deptno>= 20 then

into emp_b

select * from emp;

执行代码后emp_a表数据

40655362924c0a26f7c0b5fbb3d3d346.png

执行代码后emp_b表数据

0b2a28fe4bb7cf029547212b469a4375.png

解析:由于使用的是first,在第一次成功匹配到部门30的数据并且插入到emp_a表中,第二次匹配deptno>=20的时候由于30部门的数据已经匹配到e m p_a表中,不会进行二次匹配,所以emp_a表中只有20 部门的数据

继续往下说insert all into的用法

首先清空emp_a emp_b表中的数据

truncate table emp_a;

truncate table emp_b;

insert all into: 这种方式表示要把数据分别插入到不同的表中,从上往下第一张表匹配成功的数据在后面的表中如果满足条件的话也会进行匹配

-- 把emp表中部门大于等于30的数据插入到emp_a表中 --把部门大于等于20的数据插入到emp_b表中

insert all

when deptno >= 30 THEN

into emp_a

when deptno>= 20 then

into emp_b

select * from emp;

emp_a表数据

a7457616e08a827148c4007fc27a3554.png

emp_b表数据

c390cc3754fa6471aff72552e1b6141a.png

思维导图

37234f363952f0cce2704030b185e8b5.png

注:由于楼主表达能力有限,表达不清晰之处敬请谅解,可私下与楼主进行沟通!

2020-09-13 第一篇博客

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值