oracle 数据库多表插入详解

本文介绍Oracle中多表插入操作如何通过减少数据路径,提高数据装载效率。利用INSERT语句一次性装载数据到多个表,实现WHEN与ELSE逻辑判断,以及FIRST与ALL关键字的应用,展示在数据仓库ETL例程中多表插入的高效实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

插入多表操作。

大部分插入操作是针对单表操作的。但是oracle支持多表插入(insert)语句 。在数据仓库方面的抽取、转移和装入(ETL,Extract Transform and Load)的例程方面方面你将频繁的用到多表插入操作。

通过一个多表插入,你能你可以通过一个单一的数据源,把数据装载到多个数据表里面。通过减少整个数据的路径,来减少减少工作量,因此去的更快的输出。

如果一个WHEN条件为真(TRUE),相关的INTO语句被执行。如果没有条件为真,为真,那么ELSE条款被执行。关键字ALL告诉数据库,检查WHEN后面的

每一个条件.另一方面,关键字FIRST告诉数据库当检查WHEN条件的第一个条件为真是,停止检查后续条件。

下面的例子,是一个保险公司有两个保险条款,财产和意外伤害在条款表里。再是在数据市场里,他们把这两个表分成单独的事实表。在每月装入是,新的条款被增加到property_premium_fact 和cacuaty_premium_fact表里。你就可以使用多表插入更加有效的增加行,这样比使用两个单独的

插入(INSERT)语句个更加高效。例子如下:

  1. INSERTFIRST
  2. WHENpolicy_type='P'THEN
  3. INTOproperty_premium_fact(policy_id
  4. ,policy_nbr,premium_amt)
  5. VALUES(property_premium_seq.nextval
  6. ,policy_number,gross_premium)
  7. WHENp.policy_type='C'THEN
  8. INTOproperty_premium_fact(policy_id
  9. ,policy_nbr,premium_amt)
  10. VALUES(property_premium_seq.nextval
  11. ,policy_number,gross_premium)
  12. SELECTpolicy_nbr,gross_premium,policy_type
  13. FROMpolicies
  14. WHEREpolicy_date>=
  15. TRUNC(SYSDATE,'MM')-TO_YMINTERVAL('00-01');
INSERT FIRSTWHEN policy_type = 'P' THENINTO property_premium_fact(policy_id,policy_nbr ,premium_amt)VALUES (property_premium_seq.nextval,policy_number ,gross_premium)WHEN p.policy_type = 'C' THENINTO property_premium_fact(policy_id,policy_nbr ,premium_amt)VALUES (property_premium_seq.nextval,policy_number ,gross_premium)SELECT policy_nbr ,gross_premium ,policy_typeFROM policiesWHERE policy_date >=TRUNC(SYSDATE,'MM') - TO_YMINTERVAL('00-01');


通过使用多表插入,INSERT语句,代替两个单独的插入语句,这样的代码块

通过一个单独访问表通道代替两个访问通道因此数据装载更加高效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值