当前位置: 代码迷 >> 综合 >> Oracle 外部表简单例子及语法说明
  详细解决方案

Oracle 外部表简单例子及语法说明

热度:81   发布时间:2024-01-19 15:05:24.0

 

环境: oracle linux6.2  +oracle11.2.0.4

实验步骤:

1.   创建测试文件external_data.dat,内容如下:

<span style="font-size:12px;">0001,hawke_test,03-OCT-11
0002,malei_test,03-OCT-11</span>


 

2.   使用sys用户建立逻辑目录,并给指定的用户授予权限。(要有对操作系统中该目录的读写权限,直接使用scott用户建立,提示权限不足):

 

SQL> create directory dbtestdir as '/u01/dmp';

Directory created.

  

    SQL> grant read on directory dbtestdir to scott;

 

Grant succeeded.

 

SQL> grant write on directory dbtestdir to scott;

 

Grant succeeded.

3.   将测试文件external_data.dat,拷贝至/u01/dmp目录下。

4.   创建外部表,内容如下:

<span style="font-size:12px;">SQL> CREATE TABLE external_tab2  (3     id varchar2(4 char),4     name varchar2(12 char),5     birthday date6  )7  ORGANIZATION EXTERNAL8  (9     TYPE ORACLE_LOADER10     DEFAULT DIRECTORY dbtestdir11     ACCESS PARAMETERS12  (13  RECORDS DELIMITED BY NEWLINE14  FIELDS TERMINATED BY ','15  )16  LOCATION('external_data.dat')17  );</span>
<span style="font-size:12px;">Table created.</span>

 

5.   查询外部表:

<span style="font-size:12px;">SQL> select * from external_tab;ID       NAME                     BIRTHDAY-------- ------------------------ --------------0001     hawke_test               03-10月-110002     malei_test                03-10月-11</span>

6.   语法说明:
SQL>create table ex_tb1   --创建外部表
  2  (ename,job,sal,dname)      --表列描述,注意未指定数据类型
  3  organization external
  4  (
  5  type oracle_datapump      --使用datapump将查询结果填充到外部表,注,此处由select生成,故不支持

                                           oracle_loader
  6  default directory dat_dir   --指定外部表的存放目录
  7  location('tb1.exp,tb2.exp'))
  8  parallel 2                       --按并行方式来填充,这里的并行度必须与生成的文件数量一致才能起作用
  9  as                             
 10  select ename,job,sal,dname --填充使用的原始数据
 11  from emp join dept
 12  on emp.deptno=dept.deptno

 

6.   语法说明:
SQL>create table ex_tb1   --创建外部表
  2  (ename,job,sal,dname)      --表列描述,注意未指定数据类型
  3  organization external
  4  (
  5  type oracle_datapump      --使用datapump将查询结果填充到外部表,注,此处由select生成,故不支持

                                           oracle_loader
  6  default directory dat_dir   --指定外部表的存放目录
  7  location('tb1.exp,tb2.exp'))
  8  parallel 2                       --按并行方式来填充,这里的并行度必须与生成的文件数量一致才能起作用
  9  as                             
 10  select ename,job,sal,dname --填充使用的原始数据
 11  from emp join dept
 12  on emp.deptno=dept.deptno