首页  登陆  注册  博客集  下载频道  网络硬盘  学院论坛  家园
IT学院 网站地图 网站地图
收藏本站 收藏本站
高级搜索 高级搜索
 新闻IT新闻 互联网 微软 黑客新闻 网络网络协议 故障 网络管理 TCP/IP 无线技术 解决方案 黑客技术 漏洞 软件评测 安全资讯
 数据MSsql Oracle Mysql PL/SQL 备份 系统:Linux vista Windows FTP 防火墙 注册表 服务器行情 服务器应用 解决方案 WEB服务器
 墙纸风景壁纸 游戏壁纸 体育壁纸 汽车壁纸 人文壁纸 影视壁纸 广告壁纸 花卉壁纸 节日壁纸 动漫壁纸 明星壁纸 绘画壁纸 月历壁纸
当前位置: > 主页>数据库技术>Oracle>PL/SQL>用Oracle SQL实现文件访问
热门文章排行
 
热门文章排行 SQL 语法参考手册
SQL*NET 的加密问题
两个sql程序
用Oracle SQL实现文件访
用PL/SQL产生随机数
加速SQL查询的特征函数
Oracle PL/SQL语言基础
全面探讨PL/SQL的复合数
Oracle9i的简化SQL语法
PL/SQL中调用Java源对象
精采文章推荐
 
精采文章推荐 用T-SQL强制所有用户退
最新更新文章
 
最新更新文章 用T-SQL强制所有用户退
PL/SQL中调用Java源对象
Oracle9i的简化SQL语法
全面探讨PL/SQL的复合数
Oracle PL/SQL语言基础
加速SQL查询的特征函数
用PL/SQL产生随机数
用Oracle SQL实现文件访
两个sql程序
SQL*NET 的加密问题

用Oracle SQL实现文件访问

编辑:   来源:  日期:2008-02-06   我要投稿      家园

  Oracle9i有一个最引人注目的优点,这就是通过Oracle SQL访问非Oracle文件的能力。这一新功能被称做外部表(external tables),它对某些系统具有非常重要的作用,可以令非数据库应用程序利用外部文件,而且让这些文件被Oracle视作普通的数据表。
  
  利用外部表即可定义服务器上几乎任何普通文件的结构,同时使得Oracle把这些文件看作真正的数据表,如图A所示。 
  正如你所看到的那样,Oracle让数据库程序采用utl_file实用工具写普通文件。结合外部表的读取能力,这种新型拓扑不再需要所有的Oracle数据驻留在Oracle表内,也不需要为Oracle打开新的应用程序。下面我们就深入了解这种新特性的工作原理。
  
  
  定义外部表
  假设你要求Oracle引用以下逗号分隔的普通文本文件。
  
  7369,SMITH,CLERK,7902,17-DEC-80,800,20
  7499,ALLEN,SALESMAN,7698,20-FEB-81,1600,300,30
  7521,WARD,SALESMAN,7698,22-FEB-81,1250,500,30
  7566,JONES,MANAGER,7839,02-APR-81,2975,,20
  7654,MARTIN,SALESMAN,7698,28-SEP-81,1250,1400,30
  7698,BLAKE,MANAGER,7839,01-MAY-81,2850,,30
  7782,CLARK,MANAGER,7839,09-JUN-81,2450,,10
  7788,SCOTT,ANALYST,7566,19-APR-87,3000,,20
  7839,KING,PRESIDENT,,17-NOV-81,5000,,10
  7844,TURNER,SALESMAN,7698,08-SEP-81,1500,0,30
  7876,ADAMS,CLERK,7788,23-MAY-87,1100,,20
   
  
  以上文件包含一些职员信息:
  
  职员工号
  姓名
  职务说明
  经理的工号
  参加工作日期
  薪水
  任命
  部门
  那么该如何给Oracle定义这一文件呢?首先,我们必须在数据字典中创建一个Oracle目录入口,而数据字典则指向以上文件所驻留的Windows目录。在这个例子中我们把目录命名为testdir并指向c:\docs\pubsdb\queries目录:
  
  SQL> create directory testdir as ‘c:\docs\pubsdb\queries’;
  
  Directory Created.
  
  现在目录创建完毕,我们可以给Oracle定义外部表的结构了。代码如
  程序清单A 所示。
  
  从语法上看,我们对外部表列的定义方式同内部Oracle表的定义方式是一样的。外部定义采用有住址的外部子句,如表A所示。
  外部表定义好后就可以用SQL对外部表运行报告了,其工作方式就好象驻留在数据库内的普通数据表。查询示例如
  程序清单B所示,注意高级ROLLUP参数的复杂用法总计了部门和职位的薪水。结果如 程序清单C所示。
  
  
  外部表的局限性
  由于外部表是一种崭新的特性,Oracle还不能完美地充分利用这一功能。在Oracle9i中这一特性还具有若干局限性,主要包括:
  
  不支持DML。外部表都是只读的,但是原始数据可以用任何文本编辑器进行编辑。
  高强度查询的响应较为迟钝。外部表具有一定的处理负载,不太适合大型表的应用。
  小结
  
  通过Oracle访问普通文件具有很大用途。接下来的文章里我们将教你为Oracle定义电子数据表(spreadsheet)。这一技术对那些用户可以控制桌面电子表内系统范围参数的商用系统非常有用。


上一篇:两个sql程序  
下一篇:用PL/SQL产生随机数
 关键字:  
文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【论坛讨论

   相关文章:

   文章评论:(0条)
  
 请留名: 匿名评论   点击查看所有评论
 

  责任编辑:IT学院  声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。