oracle 数据库多表插入详解
2011-10-17 13:00
169 查看
插入多表操作。
大部分插入操作是针对单表操作的。但是oracle支持多表插入(insert)语句 。在数据仓库方面的抽取、转移和装入(ETL,Extract Transform and Load)的例程方面方面你将频繁的用到多表插入操作。
通过一个多表插入,你能你可以通过一个单一的数据源,把数据装载到多个数据表里面。通过减少整个数据的路径,来减少减少工作量,因此去的更快的输出。
如果一个WHEN条件为真(TRUE),相关的INTO语句被执行。如果没有条件为真,为真,那么ELSE条款被执行。关键字ALL告诉数据库,检查WHEN后面的
每一个条件.另一方面,关键字FIRST告诉数据库当检查WHEN条件的第一个条件为真是,停止检查后续条件。
下面的例子,是一个保险公司有两个保险条款,财产和意外伤害在条款表里。再是在数据市场里,他们把这两个表分成单独的事实表。在每月装入是,新的条款被增加到property_premium_fact 和cacuaty_premium_fact表里。你就可以使用多表插入更加有效的增加行,这样比使用两个单独的
插入(INSERT)语句个更加高效。例子如下:
view plaincopy to clipboardprint?
INSERT FIRST
WHEN policy_type = 'P' THEN
INTO property_premium_fact(policy_id
,policy_nbr ,premium_amt)
VALUES (property_premium_seq.nextval
,policy_number ,gross_premium)
WHEN p.policy_type = 'C' THEN
INTO property_premium_fact(policy_id
,policy_nbr ,premium_amt)
VALUES (property_premium_seq.nextval
,policy_number ,gross_premium)
SELECT policy_nbr ,gross_premium ,policy_type
FROM policies
WHERE policy_date >=
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语句,代替两个单独的插入语句,这样的代码块
通过一个单独访问表通道代替两个访问通道因此数据装载更加高效。
大部分插入操作是针对单表操作的。但是oracle支持多表插入(insert)语句 。在数据仓库方面的抽取、转移和装入(ETL,Extract Transform and Load)的例程方面方面你将频繁的用到多表插入操作。
通过一个多表插入,你能你可以通过一个单一的数据源,把数据装载到多个数据表里面。通过减少整个数据的路径,来减少减少工作量,因此去的更快的输出。
如果一个WHEN条件为真(TRUE),相关的INTO语句被执行。如果没有条件为真,为真,那么ELSE条款被执行。关键字ALL告诉数据库,检查WHEN后面的
每一个条件.另一方面,关键字FIRST告诉数据库当检查WHEN条件的第一个条件为真是,停止检查后续条件。
下面的例子,是一个保险公司有两个保险条款,财产和意外伤害在条款表里。再是在数据市场里,他们把这两个表分成单独的事实表。在每月装入是,新的条款被增加到property_premium_fact 和cacuaty_premium_fact表里。你就可以使用多表插入更加有效的增加行,这样比使用两个单独的
插入(INSERT)语句个更加高效。例子如下:
view plaincopy to clipboardprint?
INSERT FIRST
WHEN policy_type = 'P' THEN
INTO property_premium_fact(policy_id
,policy_nbr ,premium_amt)
VALUES (property_premium_seq.nextval
,policy_number ,gross_premium)
WHEN p.policy_type = 'C' THEN
INTO property_premium_fact(policy_id
,policy_nbr ,premium_amt)
VALUES (property_premium_seq.nextval
,policy_number ,gross_premium)
SELECT policy_nbr ,gross_premium ,policy_type
FROM policies
WHERE policy_date >=
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语句,代替两个单独的插入语句,这样的代码块
通过一个单独访问表通道代替两个访问通道因此数据装载更加高效。
相关文章推荐
- 详解:数据库名、实例名、ORACLE_SID、数据库域名、全局数据库名、服务名
- 详解:数据库名、实例名、ORACLE_SID、数据库域名(二)
- 详解:数据库名、实例名、ORACLE_SID、数据库域名、全局数据库名、服务名
- ORACLE详解:数据库名、实例名、ORACLE_SID、数据库域名、全局数据库名、服务名(转)
- Oracle闪回数据库技术详解
- Oracle大型数据库系统在AIX UNIX上的实战详解 答疑六 区别AIX中文件系统和目录
- Mybatis批量更新数据库与批量插入数据库(以oracle为例)
- 详解:数据库名、实例名、ORACLE_SID、数据库域名、全局数据库名、服务名
- 数据库分页大全及Oracle中分页详解
- Oracle 10g数据库在linux (red hat 5)上的自动启动配置方法详解
- Oracle 11g数据库详解(2015-06-13更新)
- ORACLE详解:数据库名、实例名、ORACLE_SID、数据库域名、全局数据库名、服务名(转)
- 【转】Oracle、Db2、SqlServer、MySQL 数据库插入当前系统时间
- oracle 12c创建可插拔数据库(PDB)与用户详解
- oracle一张表的数据某些字段插入到另外一张表的某些字段,以及同一数据库备份一张表
- ORACLE实例与数据库详解
- ORACLE数据库测试数据插入速度
- 使用jdbc进行多数据的批量插入数据库(Oracle)
- 详解:数据库名、实例名、ORACLE_SID、数据库域名、全局数据库名、服务名及手工脚本创建oracle数据库
- Oracle 11g数据库安装后7个服务详解