oracle外表层,三步教会你掌握Oracle外表(externaltable)

三步教会你掌握Oracle外表(externaltable)以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

c25c42b9366a42b6399af7a5eb8d087a.png

外表(external table)就像普通的表对像一样 可以select等 只是它是只读的 数据库中只保存了表结构的描述 表数据却没有存放在数据库内 而是存放在了文件系统上 当用户想偶尔使用数据库外的结构化数据时 用起外表来就非常方便 甚至比sqlldr都要方便的多 在这篇文章里 我们为大家演示了

三步就掌握Oracle外表过程 通过这次学习 也许大家就会发展原来学习oracle也是好容易哦

第一步 创建目录并授权

目录是数据文件的存放目标 数据文件通常要求是文本文件 这个过程在 i以前是需要配置utl_file_dir参数的 复制内容到剪贴板

代码  !ls >sys@TEST>!ls /home/oracle/temp  user ctl userlist txt user log  rudolf@TEST>  conn >sys@TEST>conn system/alibaba  Connected   sys@TEST>  CREATE >sys@TEST>CREATE DIRECTORY TEMP AS /home/oracle/temp/ ;  Directory created   grant >sys@TEST>grant read write on directory TEMP to rudolf;  Grant succeeded

第二步 创建外表与测试 复制内容到剪贴板

代码 cellPadding= width= % bgColor=#ffffff border= >  CREATE >rudolf@TEST>CREATE TABLE USERLIST    (   ID NUMBER    USERNAME VARCHAR ( )    EMAIL VARCHAR ( )   )   ORGANIZATION external   (   TYPE oracle_loader   DEFAULT DIRECTORY TEMP   Access PARAMETERS   (   RECORDS DELIMITED BY NEWLINE CHARACTERSET US ASCII   BADFILE TEMP : userlist bad    DISCARDFILE TEMP : userlist dis    LOGFILE TEMP : user log    READSIZE    FIELDS TERMINATED BY OPTIONALLY ENCLOSED BY LDRTRIM   MISSING FIELD VALUES ARE NULL   REJECT ROWS WITH ALL NULL FIELDS   (   ID CHAR( )   TERMINATED BY OPTIONALLY ENCLOSED BY

cellPadding= width= % bgColor=#ffffff border= >   USERNAME CHAR( )   TERMINATED BY OPTIONALLY ENCLOSED BY    EMAIL CHAR( )   TERMINATED BY OPTIONALLY ENCLOSED BY    )   )   location   (   userlist txt    )   )REJECT LIMIT UNLIMITED     / >rudolf@TEST>/  Table created   l >rudolf@TEST>l   select id username from userlist where rownum <    *  / >rudolf@TEST>/  ID USERNAME      RudolfLu   tomgu   coug   chao_ping   parrotao   cnoug   FilsDeDragon   Dragon   rows selected

瞧 成功了 外表就这么简单 可是只有二步啊 第三步在哪里呢?你也许会问 还有啊 userlist txt要固定的格式吗?create table……的语法这样的狂复杂 每一项都是什么含义呢?

这就是第三步要教给大家的东西了

第三步 理解外表数据结构与create table …… anization external语法

大家都用过sqlldr吧?外表的数据文件的结构呢就同sqlldr能读的数据文件结构一样了 那么语法呢?嘿嘿 别急 让我们先来做个sqlldr的练习吧 cellPadding= width= % bgColor=#ffffff border= >   [oracle@rac temp]$ head userlist txt   RudolfLu    tomgu    coug    chao_ping    parrotao    cnoug    FilsDeDragon    Dragon    Xavier   [oracle@rac temp]$ cat user ctl  LOAD  INFILE /home/oracle/temp/userlist txt   badfile /home/oracle/temp/userlist bad   discardfile /home/oracle/temp/userlist dis

cellPadding= width= % bgColor=#ffffff border= >  APPEND  INTO TABLE userlist  fields terminated by optionally enclosed by   trailing nullcols  ( id char( )   username char( )  )  create >rudolf@TEST>create table userlist   (id number    username varchar ( )   );  Table created   rudolf@TEST>!  [oracle@rac temp]$ sqlldr rudolf/nix@test world control= /user ctl external_table=GENERATE_ONLY    注意 我们加了一个external_table的参数 它的作用是告诉sqlldr不用真实load数据 而是生成包含external table 创建脚本的log文件 cellPadding= width= % bgColor=#ffffff border= >  [oracle@rac temp]$ ls  user ctl userlist txt user log  [oracle@rac temp]$ cat user log  SQL*Loader: Release Production on Wed Dec : :   Copyright (c) Oracle Corporation All rights reserved   Control File: /user ctl  Data File: /home/oracle/temp/userlist txt  Bad File: /home/oracle/temp/userlist bad  Discard File: /home/oracle/temp/userlist dis     CREATE DIRECTORY statements needed for files     CREATE DIRECTORY SYS_SQLLDR_XT_TMPDIR_ AS /home/oracle/temp/   CREATE TABLE statement for external table:     CREATE TABLE SYS_SQLLDR_X_EXT_USERLIST   (  ID NUMBER   USERNAME VARCHAR ( )  )  ORGANIZATION external  (  TYPE oracle_loader cellPadding= width= % bgColor=#ffffff border= >  DEFAULT DIRECTORY SYS_SQLLDR_XT_TMPDIR_   ACCESS PARAMETERS  (  RECORDS DELIMITED BY NEWLINE CHARACTERSET US ASCII  BADFILE SYS_SQLLDR_XT_TMPDIR_ : userlist bad   DISCARDFILE SYS_SQLLDR_XT_TMPDIR_ : userlist dis   LOGFILE user log_xt   READSIZE   FIELDS TERMINATED BY OPTIONALLY ENCLOSED BY LDRTRIM  MISSING FIELD VALUES ARE NULL  REJECT ROWS WITH ALL NULL FIELDS  (  ID CHAR( )  TERMINATED BY OPTIONALLY ENCLOSED BY   USERNAME CHAR( )  TERMINATED BY OPTIONALLY ENCLOSED BY )  )  location  (   userlist txt   )  )REJECT LIMIT UNLIMITED

瞧 原来我们更本不用担心怎么写create external table的语句呢 sqlldr就可以帮我们生成了! lishixinzhi/Article/program/Oracle/201311/18052

分页:123

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值