使用Oracle内建功能对ETL构建

本文介绍如何在Oracle10g中使用外部表功能,包括通过ORACLE_DATAPUMP创建外部表并将数据导出到文件,以及如何将这些文件重新加载到另一个数据库中。此外,还展示了如何利用DBMS_FILE_TRANSFER包实现文件的跨目录复制。
摘要由CSDN通过智能技术生成
  在Oracle9i中引入了外部表(External Table)的概念,通过访问驱动程序ORACLE_LOADER可以对数据库之外的文件进行只读的SQL查询。在Oracle10g中,提供了第二个访问驱动程序ORACLE_DATAPUMP,允许用户对外部表进行写操作,写出的结果文件以特定的结构保存并允许DPAPI访问,即该结果文件可以被加载到另一个数据库中。同时,新的访问驱动程序也支持列对象的投影。
   先利用Oralce的外部表的功能结合Oracle 10g 开始提供的Oracle_Datapump对一个模型的建立实践,实现的关键实验代码如下,做个笔记怕忘了:
---创建外部文件源路径和目标路径
create or replace directory SRC_DIR as 'E:\DUMP';
create or replace directory DST_DIR as 'E:\LOAD';

---ORACLE_DATAPUMP 创建外部表,写出到外部文件
create table ext_out_table
organization external 
(type ORACLE_DATAPUMP
 default directory SRC_DIR
 location('external_table_01.dmp','external_table_02.dmp'))
parallel 2
as 
select t.dim_date,t.dim_org,sum(t.fee) fee
  from dm_base_outpatient_count_day t
 group by t.dim_date,t.dim_org
 
---利用DBMS_FILE_TRANSFER包实现文件的传输
begin
  begin dbms_file_transfer.copy_file('SRC_DIR','external_table_01.dmp','DST_DIR','external_table_01_bak.dmp'); end;
  begin dbms_file_transfer.copy_file('SRC_DIR','external_table_02.dmp','DST_DIR','external_table_02_bak.dmp'); end;
end;  

---ORALCE_DATAPUMP 读取外部文件(需要也是ORACLE_DATAPUMP驱动的),创建外部表
create table ext_in_table
(dim_date date,
 dim_org  varchar2(128),
 fee      number)
organization external
(type ORACLE_DATAPUMP
 default directory DST_DIR
 access parameters
 (logfile 'external_in_table_log.log')  
  location('external_table_01_bak.dmp','external_table_02_bak.dmp'))


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值