--DBA 执行
grant CREATE ANY DIRECTORY to t071;
--用户 t071执行
create table countries(
country_id number,
country_name varchar2(30),
country_reigion varchar2(30)
);
insert into countries values(1,'AMERICA','america');
insert into countries values(2,'china','zhuzhou');
insert into countries values(3,'JAPAN','dongjing');
commit;
--创建目录dir
create or replace directory dir as 'D:\dump\dir';
----执行创建外部表的语句
CREATE TABLE countries_ext
ORGANIZATION EXTERNAL
(
TYPE ORACLE_DATAPUMP
DEFAULT DIRECTORY dir --生成dmp文件存放路径
LOCATION ('countries_ext.dmp') --生成外部文件的名称
)
AS SELECT * FROM countries; --数据来源于实体表
--执行如下语句,有3条数据
select * from countries_ext;
--查看服务器电脑本地磁盘
D:\dump\dir>dir
驱动器 D 中的卷是 新加卷
卷的序列号是 A4D2-5C86
D:\dump\dir 的目录
2019-10-22 15:22 <DIR> .
2019-10-22 15:22 <DIR> ..
2019-10-22 15:22 12,288 COUNTRIES_EXT.DMP
2019-10-22 15:24 90 COUNTRIES_EXT_1384_3664.log
2 个文件 12,378 字节
2 个目录 20,493,324,288 可用字节
由此可见,创建外部实体表成功。
二、使用datapump,根据硬盘存储的外部文件(COUNTRIES_EXT.DMP)创建oracle数据库实体表COUNTRIES_EXT2
drop table countries_ext2;
CREATE TABLE countries_ext2
(COUNTRY_ID NUMBER,
COUNTRY_NAME VARCHAR2(30),
COUNTRY_REIGION VARCHAR2(30)
)
ORGANIZATION EXTERNAL
(
TYPE ORACLE_DATAPUMP
DEFAULT DIRECTORY dir
LOCATION ('countries_ext.dmp')
);
select * from countries_ext2;
--执行相应的操作
insert into countries values(4,'CN','BeiJing');
commit;
select * from countries;
--执行如下2个语句,全部失败
insert into countries_ext values(5,'CN','SH');
insert into countries_ext2 values(5,'CN','SH');
--但是如下语句可以执行成功
select * from countries_ext;
select * from countries_ext2;