oracle 数据库多表插入详解

翻译 2011年10月17日 13:00:47
 

插入多表操作。

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

 

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

 

 

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

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

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

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

  1. INSERT FIRST  
  2. WHEN policy_type = 'P' THEN  
  3. INTO property_premium_fact(policy_id  
  4. ,policy_nbr ,premium_amt)  
  5. VALUES (property_premium_seq.nextval  
  6. ,policy_number ,gross_premium)  
  7. WHEN p.policy_type = 'C' THEN  
  8. INTO property_premium_fact(policy_id  
  9. ,policy_nbr ,premium_amt)  
  10. VALUES (property_premium_seq.nextval  
  11. ,policy_number ,gross_premium)  
  12. SELECT policy_nbr ,gross_premium ,policy_type  
  13. FROM policies  
  14. WHERE policy_date >=  
  15. TRUNC(SYSDATE,'MM') - TO_YMINTERVAL('00-01');  


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

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

More Effective C++ 条款18

 条款18:分期摊还期望的计算在条款17中,我极力称赞懒惰的优点,尽可能地拖延时间,并且我解释说懒惰如何提高程序的运行效率。在这个条款里我将采用一种不同的态度。这里将不存在懒惰。我鼓励你让程序做的事情...
  • zhc
  • zhc
  • 2001-10-18 23:13:00
  • 727

oracle数据库:update更新多表总结

总体原则:1)更新的时候一定要加where条件,否则必然引起该字段的所有记录更新                    2)跨表更新时,set和where时,尽量减少扫描次数,从而提高优化 ...
  • funnyfu0101
  • funnyfu0101
  • 2016-10-09 18:16:19
  • 5706

Android项目中,在一个数据库里建立多张表

一,创建一个公共的DBAdapter; 为了在整个程序运行期间调用该公共的数据库,我们定义了一个扩展自Application的CommDB类: 1,创建唯一的数据库: 1 pu...
  • kakaxi1o1
  • kakaxi1o1
  • 2014-08-07 11:17:59
  • 19334

oracle 数据库多表插入详解

插入多表操作。 大部分插入操作是针对单表操作的。但是oracle支持多表插入(insert)语句 。在数据仓库方面的抽取、转移和装入(ETL,Extract Transform and Load)的...
  • ahoal
  • ahoal
  • 2011-10-17 13:00:47
  • 311

android中sqlite数据库的基本使用和添加多张表

看了很多关于android使用sqlite数据库的文章,很多都是介绍了数据库的建立和表的建立,而表通常都是只建立一张,而实际情况我们用到的表可能不止一张,那这种情况下我们又该怎么办呢,好了,下面我教大...
  • xunan419
  • xunan419
  • 2016-03-22 09:36:12
  • 450

informatica 数据库之间的多表数据同步(全量/增量)以及variable的使用问题

两个数据库之间的多表数据同步(增量或全量) 中间有一张control table 表结构大概为 table_name varchar(200), load_flag int, 利用load_fla...
  • sinat_37073641
  • sinat_37073641
  • 2017-08-29 10:51:25
  • 949

数据库多表操作事务处理

在需要同时插入多条数据时,这其中可能是同一个表的多条记录,也可能是多个不同表之间的数据同时更新。对此,我们需要保证其中的原子性和一致性,做到要么全部操作都能全部成功完成,否则全部不操作。 ...
  • lms1719
  • lms1719
  • 2015-08-28 20:13:54
  • 2664

给<em>数据库</em>新建表插入数据方法

给<em>数据库</em>新建表 插入数据方法给<em>数据库</em>新建表 插入数据方法给<em>数据库</em>新建表 插入...您今日下载次数已达上限(为了良好下载体验及使用,每位用户24小时之内最多可下载...
  • 2018年04月16日 00:00

C#如何通过一个<em>数据</em>集获取多个<em>数据表</em>(源码例)

通过SQL语句,将多个<em>数据表</em>装到一个dataset中... EF<em>多表</em>关联数据更新 MVC5+EF6简单实例---以原有SQLServer<em>数据库</em>两表联合查... 对<em>多表</em>进行<em>添加数据</em>(获取最后...
  • 2018年04月16日 00:00

android系统数据库中多个数据表含有变量插入操作

String sql="insert into "+str+"(useid,date,content,dirr) values(?,?,?,?)";         Object args[]=ne...
  • lyq563874257
  • lyq563874257
  • 2016-03-29 17:41:47
  • 514
收藏助手
不良信息举报
您举报文章:oracle 数据库多表插入详解
举报原因:
原因补充:

(最多只允许输入30个字)