前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >外部表简单总结(r3笔记第51天)

外部表简单总结(r3笔记第51天)

作者头像
jeanron100
发布2018-03-15 10:25:37
6840
发布2018-03-15 10:25:37
举报

对于外部表的使用而言,可能是既陌生又熟悉的感觉,说陌生可能自己真正的使用机会要少一些,而熟悉可能是大家比较常用的通过外部表来查看数据库日志,其实外部表还有更丰富的内容。 当然了外部表的使用都是基于目录来实现的。外部表调用的引擎有两个,一个oracle_datapump引擎,一个是oracle_loader引擎,在使用中和datapump,sql*loader都是有一定的关联的。 比如下面的例子。 我们需要导出emplyees中的数据,就可以使用如下的方式。基本是做数据的导出的情况比较多。导出文件为emp.data

create table hr.ext_emp organization external
(type oracle_datapump
 default directory  ext_dir
 location('emp.data')
)as
select * from hr.employees;

在上面的基础上,如果我们想根据employees表的salary导出一个dump文件emp.data,下面的方式就很有优势。

create  table hr.extp_emp organization external
(type oracle_datapump
 default directory  ext_dir
 location('emp.dmp')
) as select * from hr.employees where  salary>10000;

然后我们循序渐进,直接根据得到的dump文件emp.data来加载为一个全新的外部表。 比如我们需要一个全新的外部表,需要得到emp.data中的数据。可以使用如下的方式。

create  table hr.extp2_emp(employee_id  number(6),first_name varchar2(20)) organization external
(type oracle_datapump
 default directory  ext_dir
 location('emp.dmp')
) ;

这样就可以直接从外部表extp2_emp中直接访问dump emp.data中的数据了。 以上是使用oracle_datapump的一些常用实例。 对于oracle_loader来说,效果相比sql*loader也毫不逊色。数据的加载上也很灵活。 如果我们想得到10g数据库版本中的数据库日志信息,可以参考下面的方式。 首先得到数据库日志的路径,然后创建对应的目录结构。然后直接把数据库日志文件以行的形式加载,生成一个只读的表。日志中的每一行在数据库中都是一行记录。

create  directory alert_dir as '/u01/app/oracle/admin/PODD/bdump';
grant read,write  on directory alert_dir to hr;
create table hr.alert_log(text varchar2(1000)) organization external
(type  oracle_loader
 default  directory alert_dir
 location('alert_PODD.log')
);

如果在实际的应用中可能有更为复杂的情况。 比如我们需要一个只读表emp_load,来读取info.dat中的数据,可能对于数据类型的转换而言。需要做一些额外的转换工作,oracle_loader就是一个不错的选择。 我们要加载Info.dat的数据,要转换的数据类型等就可以类似下面的例子。

CREATE  TABLE hr.emp_load
      (employee_number      CHAR(5),
        employee_dob         CHAR(20),
       employee_last_name    CHAR(20),
       employee_first_name  CHAR(15),
        employee_middle_name CHAR(15),
       employee_hire_date   DATE)
     ORGANIZATION EXTERNAL
      (TYPE ORACLE_LOADER
      DEFAULT  DIRECTORY ext_dir
      ACCESS PARAMETERS
        (RECORDS DELIMITED BY  NEWLINE
         FIELDS (employee_number      CHAR(2),
                  employee_dob         CHAR(20),
                 employee_last_name    CHAR(18),
                 employee_first_name  CHAR(11),
                  employee_middle_name CHAR(11),
                 employee_hire_date   CHAR(10)  date_format DATE mask "mm/dd/yyyy"
                )
        )
       LOCATION ('info.dat')
     ); 
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2014-11-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档