目录
一、外部表
1、什么是外部表:
外部表只能在Oracle 9i之后来使用。
简单地说,外部表,是指不存在于数据库中的表。通过向Oracle提供描述外部表的元数据,我们可以把一个操作系统文件当成一个只读的数据库表,就像这些数据存储在一个普通数据库表中一样来进行访问。外部表是对数据库表的延伸。
2、外部表优点
--数据可以直接从外部文件中使用,也可以加载到另一一个数据库中。 --外部数据可以直接被数据使用而不要求首先加载它。 --复杂查询的结果可以卸载到外部文件中。 --为了加载的目的,您可以组合来自不同来源的生成文件。
3、外部表缺点
--只读
二、外部表类型
1、平板文件(SQL_LOAD方式)
(1)Oracle创建外部表结构/元数据
(2)从其他地方导出外部表(empxt1.dat等)
(3)直接在Oracle内部查询定义的表(extab_exployees)
2、dump文件(注意非expdp)
(1)在原库中,通过create table方式导出select的dump文件:
SQL> create table oe.orders_ext (order_id, order_date, order_mode, customer_id, order_status, order_total, sales_rep_id, promotion_id ) organization external (type oracle_datapump default directory ext_dir location ( orders.dmp')) as select * from oe.orders;
(2)目标端进行创建外部表关联(1)中创建的orders.dmp
SQL> create table oe.orders_ext (order_id NUMBER(12), order_date TIMESTAMP(6) WITH LOCAL TIME ZONE, order_mode VARCHAR2(8), customer_id NUMBER(6), order_status NUMBER(2), order_total NUMBER(8,2) , sales_rep_id NUMBER(6), promotion_id NUMBER(6)) organization external (type oracle_datapump default directory ext_dir location ('orders.dmp'));
(3)目标端查看数据
SQL>select count(*) from oe.order_ext;
三、外部表查询
1、查询外部表:
SELECT * FROM extab_ employees ;
2、查询外部表并将其与内部表连接:
SELECT e. employee id, e.first name, e.last_ name, d. department name FROM departments d,extab employees e WHERE d. department id = e . department id ;
3、将外部表中的数据追加到内部表:
INSERT /*+ APPEND */ INTO hr . employees SELECT * FROM extab employees ;
四、查看有关外部表的信息
1、
2、不支持索引,可以使用分区。