网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>数据库技术>>Oracle技术>>Oracle开发>查看文档  
  三步教会你掌握oracle外表(external table)     
  文章作者:未知  文章来源:赛迪网技术社区  
  查看:83次  录入:管理员--2008-08-18  
 

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

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

第一步:创建目录并授权

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

代码:

sys@test>!ls /home/oracle/temp

user.ctl userlist.txt user.log

rudolf@test>

sys@test>conn system/alibaba

connected.

sys@test>

sys@test>create directory temp as '/home/oracle/temp/';

directory created.

sys@test>grant read,write on directory temp to rudolf;

grant succeeded.

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

代码:

rudolf@test>create table "userlist"

2 (

3 id number,

4 username varchar2(30),

5 email varchar2(128)

6 )

7 organization external

8 (

9 type oracle_loader

10 default directory temp

11 access parameters

12 (

13 records delimited by newline characterset us7ascii

14 badfile 'temp':'userlist.bad'

15 discardfile 'temp':'userlist.dis'

16 logfile 'temp':'user.log'

17 readsize 1048576

18 fields terminated by "," optionally enclosed by '"' ldrtrim

19 missing field values are null

20 reject rows with all null fields

21 (

22 id char(30)

23 terminated by "," optionally enclosed by '"',

24 username char(30)

25 terminated by "," optionally enclosed by '"',

26 email char(128)

27 terminated by "," optionally enclosed by '"'

28 )

29 )

30 location

31 (

32 'userlist.txt'

33 )

34 )reject limit unlimited

35

rudolf@test>/

table created.

rudolf@test>l

1 select id,username from userlist where rownum < 10

2*

rudolf@test>/

id username

---------- ------------------------------

1 rudolflu

3 tomgu

6 coug

7 chao_ping

8 parrotao

9 cnoug

10 filsdedragon

11 dragon

9 rows selected.

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

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

第三步:理解外表数据结构与create table ... organization external语法

大家都用过sqlldr吧?外表的数据文件的结构呢就同sqlldr能读的数据文件结构一样了。那么语法呢?嘿嘿,别急,让我们先来做个sqlldr的练习吧:

[oracle@rac1 temp]$ head -10 userlist.txt

1,"rudolflu"

3,"tomgu"

6,"coug"

7,"chao_ping"

8,"parrotao"

9,"cnoug"

10,"filsdedragon"

11,"dragon"

15,"xavier"

[oracle@rac1 temp]$ cat user.ctl

load

infile '/home/oracle/temp/userlist.txt'

badfile '/home/oracle/temp/userlist.bad'

discardfile '/home/oracle/temp/userlist.dis'

append

into table userlist

fields terminated by ',' optionally enclosed by '"'

trailing nullcols

( id char(30),

username char(30)

)

rudolf@test>create table userlist

2 (id number,

3 username varchar2(30)

4 );

table created.

rudolf@test>!

[oracle@rac1 temp]$ sqlldr rudolf/nix@test2.world control=./user.ctl external_table=generate_only

注意,我们加了一个external_table的参数。它的作用是告诉sqlldr不用真实load数据,而是生成包含external table 创建脚本的log文件。

[oracle@rac1 temp]$ ls

user.ctl userlist.txt user.log

[oracle@rac1 temp]$ cat user.log

sql*loader: release 9.2.0.4.0 - production on wed dec 10 20:50:19 2003

copyright (c) 1982, 2002, 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_00000 as '/home/oracle/temp/'

create table statement for external table:

------------------------------------------------------------------------

create table "sys_sqlldr_x_ext_userlist"

(

id number,

username varchar2(30)

)

organization external

(

type oracle_loader

default directory sys_sqlldr_xt_tmpdir_00000

access parameters

(

records delimited by newline characterset us7ascii

badfile 'sys_sqlldr_xt_tmpdir_00000':'userlist.bad'

discardfile 'sys_sqlldr_xt_tmpdir_00000':'userlist.dis'

logfile 'user.log_xt'

readsize 1048576

fields terminated by "," optionally enclosed by '"' ldrtrim

missing field values are null

reject rows with all null fields

(

id char(30)

terminated by "," optionally enclosed by '"',

username char(30)

terminated by "," optionally enclosed by '"' )

)

location

(

'userlist.txt'

)

)reject limit unlimited

...

瞧,原来我们更本不用担心怎么写create external table的语句呢。sqlldr就可以帮我们生成了! 

您是不是已经学会了?

 
 
上一篇: oracle数据库pl/sql过程调试的输出方法    下一篇: linux系统环境下安装oracle 10g的艰难之旅
  相关文档
oralce定时执行存储过程任务的设置步骤 03-03
在Windows系统下完全卸载Oracle的好方法 09-29
Oracle外部程序的触发小结 05-27
怎样才能dump oracle数据库的内部结构 04-07
利用Oracle执行计划机制提高查询性能 04-11
理解和使用Oracle 8i分析工具-LogMiner 01-15
版本在9.2.0.3以下时autotrace的设置方法 02-28
实例解析:怎样更改监听器日志文件名称 11-21
全面解析oracle数据库的系统和对象权限 05-07
使用多线索服务器的Oracle的运行 09-29
oracle数据库中按用户名重建索引的方法 04-29
讲解杀死oracle数据库死锁进程的具体方法 06-24
如何通过触发器实现数据库的即时同步 04-10
解读oracle11g在商业银行的三大应用亮点 10-14
解析:如何正确的更改监听器日志文件名称 11-15
linux上安装oracle汉字乱码问题的解决方法 08-07
解析:索引跳跃式扫描 (index skip scan) 11-15
Oracle 9i应用COMPOSE和UNISTR创建沉音 07-07
教你删除oracle数据库中重复没用的数据 09-10
Oracle异常关闭导致的故障及解决办法 04-11
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
厦门(总部):13616026886 福州:0591-87655121
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息