ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 【转】Oracle的外部表介绍

【转】Oracle的外部表介绍

原创 Linux操作系统 作者:mhaoy 时间:2010-12-29 11:05:08 0 删除 编辑

外部表的建立

    外部表是在数据库以外的文件系统上存储的只读表,例如EXCEL、CSV等文件

    建立外部表的步骤如下:

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

    2、创建一个Directory:

    create directory TestTable_dir as 'D:\Test' ;

    3、创建一个外部表:

    create table TestTable(

       ID varchar2 ( 10 ),

       NAME varchar2 ( 20 ),

       TYPE varchar2 ( 20 ),

       AGE varchar2 ( 20 ) )

    organization external (

       type oracle_loader

       default directory TestTable_dir

       access parameters (fields terminated by ',' )

       location ( 'TestTable.csv' )

       );


    需要注意两点:

    ● 使用number类型时须发查询数据(不知道为什么)

    ● 在建csv表时无需加表头,否则会多出一行数据来

我感觉外部表的数据源文件里面都不用多写表头,因为表头一般都是字母的,很容易导致冲突(跟数字型字段等) 

各类参数说明

    1、type oracle_loader

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

    2、defaultdirectory TestTable_dir

       location ('TestTable.csv')

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

    3、accessparameters

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

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

 

外部表的错误处理

    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

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15149581/viewspace-682779/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-05-13

  • 博文量
    54
  • 访问量
    96215