外部表基本语法示例

========================= 如何创建外部表?============================
 使用SQL语句CREATE TABLE ... ORGANIZATION EXTERNAL创建外部表。
==========================外部表定义的几个重点========================
1 ORGANIZATION EXTERNAL关键字,必须要有。表明定义的表是外部表。
2 重要参数外部表的类型(TYPE)
  ORACLE_LOADER:定义外部表的缺省(默认)方式,只能只读方式实现文本文件数据的装载。
  ORACLE_DATAPUMP:支持队数据库的装载和卸载,数据文件必须为二进制dump文件。可以从外部表提取数据加载到内部表,也可以从内部表卸载数据作为二进制文件填充到外部表。
3 DEFAULT DIRECTORY:默认的目录 指明了外部文件所在的路径
4 ACCESS PARAMETERS:描述如何对外部表进行访问
5 LOCATION:定义了外部表的位置(数据存放位置也是数据来源路径)

================以下示例简要说明了每种访问驱动程序的属性使用情况===================
示例14-1指定ORACLE_LOADER访问驱动程序的属性
   以下示例使用ORACLE_LOADER访问驱动程序显示每个属性的使用(它假定默认目录def_dir1已存在):

create or replace directory ENTRY_LOG as '/tmp/def_dir1/';

SQL> CREATE TABLE emp_load  
2    (employee_number      CHAR(5),  
3     employee_dob         CHAR(20),  
4     employee_last_name   CHAR(20),  
5     employee_first_name  CHAR(15),  
6     employee_middle_name CHAR(15),  
7     employee_hire_date   DATE)  
8    ORGANIZATION EXTERNAL  
9    ( TYPE ORACLE_LOADER 
10     DEFAULT DIRECTORY def_dir1    //指定用于未明确命名目录对象的所有输入和输出文件的默认目录
11     ACCESS PARAMETERS             //访问参数 描述外部数据源并实现指定的外部表类型
12       (   RECORDS DELIMITED BY NEWLINE    //按行换行;RECORDS关键字后定义如何识别数据行,DELIMITED BY 'XXX'——换行符,常用newline定义换行
13           CHARACTERSET UTF8  
14           BADFILE entry_log:'EMP.bad'
15           LOGFILE entry_log:'EMP.LOG'
16           READSIZE 1024     //Oracle读取输入数据文件所用的默认缓冲区,此处为MB
17           FIELDS TERMINATED BY "," LDRTRIM  //描述字段以','结尾
18           MISSING FIELD VALUES ARE NULL    //某些字段空缺值都设为NULL
19           REJECT ROWS WITH ALL NULL FIELDS  //所有为空值的行被跳过并且记录到.bad文件
20            (   employee_number      CHAR(2), 
21                employee_dob         CHAR(20), 
22                employee_last_name   CHAR(18), 
23                employee_first_name  CHAR(11), 
24                employee_middle_name CHAR(11), 
25                employee_hire_date   CHAR(10) date_format DATE mask "mm/dd/yyyy" 
26             ) 
27       ) 
28     LOCATION ('info.dat')                     
29    );
30  reject limit unlimited   //允许发生错误的个数不受限制
31  noparallel   //不按并行方式来填充

通过访问驱动程序提供的信息可确保处理来自数据源的数据,以使其与外部表的定义相匹配。  CREATE TABLE emp_load之后列出的字段实际上是在info.dat源文件中定义数据的元数据。

示例14-2指定ORACLE_DATAPUMP访问驱动程序的属性
  此示例创建一个名为inventories_xt的外部表,并使用oe示例模式中的表清单中的数据填充外部表的转储文件。

SQL> CREATE TABLE inventories_xt 
2    ORGANIZATION EXTERNAL 
3    ( 
4      TYPE ORACLE_DATAPUMP 
5      DEFAULT DIRECTORY def_dir1 
6      LOCATION ('inv_xt.dmp')
7    ) 
8    AS SELECT * FROM inventories; 
Table created.

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值