[转自] http://blog.chinaunix.net/uid-10697776-id-2935685.html



定义

External tables access data in external sources as if it were in a table in the database.

You can connect to the database and create metadata for the external table using DDL.

The DDL for an external table consists of two parts: one part that describes the Oracle

column types, and another part (the access parameters) that describes the mapping of

the external data to the Oracle data columns.

u 创建的语法类似于: "CREATE TABLE ... ORGANIZATION EXTERNAL"

u 数据在数据库的外部组织,是操作系统文件。

u 操作系统文件在数据库中的标志是通过一个逻辑目录来映射的。

u 数据是只读的。(外部表相当于一个只读的虚表)

u 不可以在上面运行任何 DML 操作,不可以创建索引。

u 可以查询操作和连接。可以并行操作。

建立外部表的步骤

1、创建以“,”分隔的文件“TestTable.csv”至“D:\Test”

2、创建一个Directory:

create directory TestTable_diras 'D:\Test' ;

3、创建一个外部表:

create table TestTable(

ID varchar2 ( 10 ),

NAME varchar2 ( 20 ),

TYPE varchar2 ( 20 ),

AGEvarchar2 ( 20 ))

organization external (

type oracle_loader

default directory TestTable_dir

access parameters (fields terminatedby ',' )

location ( 'TestTable.csv' )

);

各类参数说明

1、type oracle_loader

数据转换驱动器,oracle_loader为默认,也可以改换其他

2、defaultdirectory TestTable_dir

location ('TestTable.csv')

指定外部表所在文件夹以及指定文件

3、accessparameters

设置转换参数,例如(fields terminatedby',')表示以','为字段间的分隔符

● 参数由访问驱动程序定义

外部表的错误处理

1、REJECT LIMIT子句

在创建外部表时最后加入LIMIT子句,表示可以允许错误的发生个数。

* 默认的REJECT LIMIT值为0

* REJECT LIMIT UNLIMITED则不会报错

2、BADFILE 和 NOBADFILE 子句

在accessparameters中加入BADFILE'BAD_FILE.txt'子句,则所有数据转换错误的值会被放入'BAD_FILE.txt'中

使用NOBADFILE子句则表示忽略转换错误的数据

● 如果不写BADFILE或NOBADFILE,则系统自动在源目录下生成与外部表同名的.BAD文件

● BADFILE只能记录前1次操作的结果,他会被第2次操作所覆盖。

3、LOGFILE 和 NOLOGFILE 子句

在accessparameters中加入LOGFILE'LOG_FILE.log'子句,则所有Oracle的错误信息放入'LOG_FILE.log'中

使用NOLOGFILE子句则表示不记录错误信息到log中

● 如果不写LOGFILE或NOLOGFILE,则系统自动在源目录下生成与外部表同名的.LOG文件

修改外部表语句

外部表与堆表一样可以之用ALTER TABLE命令修改表属性

* REJECT LIMIT        --错误数

* DEFAULT DIRECTORY   --默认目录

* ACCESS PARAMETERS   --参数

* LOCATION            --数据文件

* ADD COLUMN          --增加列

* MODIFY COLUMN       --列定义

* DROP COLUMN         --删除列

* RENAME TO           --外部表更名

其他约束

● 外部表无法使用insert、update、delete等操作,要修改其数据只能通过修改数据文件。

● 外部表不能建立索引,如要建立,则需要先create table XX as select * from TestTable

PS:

1.外部表可以加载和卸载数据泵格式的数据,只需把organization external里的参数type设置为oracle_datapump。

create table all_objects_unload

            organization external

                   (

                   type oracle_datapump

                  default directory testdir

                  location('allobjects.dat')

                  )

            as

            select * from all_objects

最新文章

  1. Base64原理
  2. vi命令模式下快速注释代码的方法
  3. 炉石传说 C# 开发笔记 (初版)
  4. 如何判断PHP 是线程安全还是非线程安全的
  5. Nginx提示502和504错误的解决方案
  6. 转:python webdriver API 之浏览器多窗口处理
  7. 使用JsPlumb绘制拓扑图的通用方法
  8. LINUX下中文语言包的安装(转)
  9. Oracle的分页查询语句优化
  10. dubbo Forbid blacklist
  11. 安卓餐厅点餐系统---针对浩然android工作室的一个小白的分析
  12. CPP 栈 示例
  13. 玩转spring mvc(四)---在spring MVC中整合JPA
  14. 利用python实现两个文件夹的同步
  15. 修改torndb库为依赖pymysql,使其适应python3,一个更简单的操作数据库的类。
  16. centos7 安装Node.js并配置为全局可用
  17. 通过cgroup给docker的CPU和内存资源做限制
  18. TCP三次握手连接
  19. centos6 pip install python-ldap报错
  20. KVM入门

热门文章

  1. Asp.net MVC获取访问系统的客户端计算机的主机名和IP地址
  2. 利用Thread.stop完成方法执行超时中断
  3. css总结18:HTML 表单和inut各个常用标签
  4. .net连接eDirectory,需要安全连接的解决方案
  5. Java变量的修饰符
  6. 将以太坊封装为 ERC20
  7. 内存布局------c++程序设计基础、编程抽象与算法策略
  8. Mybatis中的连接池
  9. Permission denied: .gvfs
  10. 【大数据系统架构师】1.2 大数据基础Hadoop 2.X