Oracle 外部表创建实验
Oracle为外部表提供了两种访问的驱动程序,默认的访问程序是oracle_loader,它允许使用oracle的装载技术从外部文件中读取数据。另一种访问驱动程序是oracle_datapump它从数据库读取数据库并将数据插入到外部表中。
1. Oracle_loader驱动程序
创建外部表去访问D:\waibubiao 下exp.dat文件中的记录
(1).创建一个目录
create directory mulu as 'D:\waibubiao'
SQL> create directory mulu as 'D:\waibubiao';
目录已创建。
(2).给scott用赋予对目录mulu的读写权限
SQL> grant read,write on directory mulu to scott;
授权成功。
SQL>
(3).在soctt用户下创建外部表admin_ext_testing
create table admin_ext_testing
(id number, name varchar(10))
organization external
(type oracle_loader
default directory mulu
access parameters
(
records delimited by newline
badfile mulu:'exp.bad'
logfile mulu:'emp.log'
fields terminated by ','
missing field values are null
(id,name))
location ('exp.dat'))
reject limit unlimited;
SQL> conn scott/tiger
已连接。
SQL> create table admin_ext_testing
2 (id number, name varchar(10))
3 organization external
4 (type oracle_loader
5 default directory mulu
6 access parameters
7 (
8 records delimited by newline
9 badfile mulu:'exp.bad'
10 logfile mulu:'emp.log'
11 fields terminated by ','
12 missing field values are null
13 (id,name))
14 location ('exp.dat'))
15 reject limit unlimited;
表已创建。
SQL>
(4).外部表创建成功,查询外部表中的数据
SQL> select * from admin_ext_testing;
ID NAME
---------- --------------------
1 jack
2 pter
3 tom
4 sola
5 kobe
6 ddd
7 jjjjj
8 999
已选择8行。
SQL>
至此oracle可以访问外部文件的数据了
2. Oracle_datapump驱动程序
创建一个外部表去访问另一个数据库中的数据库,先把令一个数据库中的数据导入一个文件,然后再去访问外部文件。
数据库mdsp要访问数据库wlm中一个表test的数据,数据如下:
SQL> select * from test;
ID NAME
---------- --------------------
1000 abc
1001 abc
1002 abcer
1003 defalut
SQL>
(1).在wlm数据库上创建一个目录data
create directory mulu as 'D:\data'
SQL> create directory mulu as 'D:\data';
目录已创建。
SQL>
(2)在wlm数据库上创建外部表,执行完下面的语句后,会把表test中数据放到d:\data下TEST.DAT中
SQL> create table ext_test (id , name)
2 organization external
3 (
4 type oracle_datapump
5 default directory mulu
6 location('test.dat')
7 )
8 as select * from test;
表已创建。
SQL>
(3)在mdsp数据库中创建目录data指向d:\data
SQL> create directory data as 'D:\data'
目录已创建。
SQL>
(4)在mdsp上创建外部表去访问TEST.DAT文件中的数据
SQL> create table ext_mdsp_test (id number , name varchar(10))
2 organization external
3 (
4 type oracle_datapump
5 default directory data
6 location('test.dat')
7 );
表已创建。
SQL>
(5)在mdsp数据库上访问外部表ext_mdsp_test
SQL> select * from ext_mdsp_test;
ID NAME
---------- --------------------
1000 abc
1001 abc
1002 abcer
1003 defalut
SQL>
注:在外部表上不能执行DML操作