Decode360's Blog

业精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

  BlogJava :: 首页 :: 新随笔 :: 联系 ::  :: 管理 ::
  397 随笔 :: 33 文章 :: 29 评论 :: 0 Trackbacks
外部表的建立
 
    外部表是在数据库以外的文件系统上存储的只读表,例如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、BADFILENOBADFILE 子句
 
      在accessparameters中加入BADFILE 'BAD_FILE.txt'子句,则所有数据转换错误的值会被放入'BAD_FILE.txt'
      使用NOBADFILE子句则表示忽略转换错误的数
 
      ● 如果不写BADFILE或NOBADFILE,则系统自动在源目录下生成与外部表同名的.BAD文件
      ● BADFILE只能记录前1次操作的结果,他会被第2次操作所覆盖。
 
    3、LOGFILENOLOGFILE 子句
 
      在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
 
 
 
 
posted on 2008-10-13 20:54 decode360 阅读(252) 评论(0)  编辑  收藏 所属分类: 07.Oracle

只有注册用户登录后才能发表评论。


网站导航: