欢迎来到天天文库
浏览记录
ID:11414791
大小:91.50 KB
页数:11页
时间:2018-07-11
《oracle数据库中业务数据文本导出》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Oracle数据库中业务数据文本导出摘要:本文论述在ORACEL数据库系统中,利用UTL_FILE包将业务数据依照文本文件格式导出的方法、注意事项和通用源代码。关键词:ORACLE、UTL_FILE、文本文件格式、导出一、引言在日常的数据库操作过程中,经常有将数据库中的部分业务数据导出的需求,用以提供给相关人员,其再利用第三方的工具或者其他数据库系统载入数据。主要用于查看、分析和统计、数据搬移等不同的目的。几乎所有的数据库系统,都拥有自身的导入和导出数据方式和工具。例如:ORACLE数据库中的EXP和IMP工具、SYBASE中的BCP工具等
2、等。需求方对于导出的数据的文件格式和使用场合的要求也是多种多样。最通用的一种方式,就是将数据以文本文件的格式导出。本文论述ORACEL数据库系统中,利用UTL_FILE包将业务数据依照文本文件格式导出的方法、注意事项和通用源代码。二、数据输入输出及UTL_FILE包Oracle数据库中,非常著名的导入和导出工具就是EXP和IMP。这是两个命令行的工具,用来抽取表、模式,或从一个Oracle实例中抽取整个数据库的定义,然后导入到另一个实例或模式。但是这两个工具仅仅适用于Oracle数据库系统自身,导出的文件是二进制格式的文件,只有Oracle
3、自身认识数据的含义和文件的组织结构,故而只能在Oracle数据库中相互成对地使用。在异种数据库导入数据时,无法使用EXP导出的数据文件完成数据的正常入库工作。几乎所有的数据库都支持文本格式的数据正常载入数据库。在Oracle系统中,数据库中的业务数据导出成文本文件,同时不借助第三方开发的工具,主要有两种方式。其一,使用Oracle的SQL*PLUS工具中的SPOOL命令。但是,该种方式在客户端方式工作时,会产生大量的网络数据传输和终端数据的显示输出。在大型网络中占用传输数据带宽和消耗传输时间,所以该方式不适宜导出大量的数据。同时,在生成的数
4、据文本文件中会附加SQL语句。这些附加的SQL语句在数据文件重新使用时,需要用相关的方法将其从数据文件中删除,增加了文件处理的复杂度。其二,使用Oracle提供的UTL_FILE包。这种方式正是本文讨论的范畴。Oracle系统中,PL/SQL语言本身不提供任何屏幕输出以及I/O的机制,但是它可以通过所提供的包来完成这些功能。使用UTL_FILE包能够实现在数据库服务器端上读写文件。需要注意,由于UTL_FILE包是在服务器端上读写文件,因此它是受限制的操作系统文件的I/O操作。由UTL_FILE执行的文件操作在操作系统中是作为Oracle用
5、户实现的。Oracle用户是用于运行数据库所需要文件的拥有者,同时它也是组成数据库实例进程的拥有者。这样一来Oracle用户就必须具有操作系统读写所有可访问文件的权限。由UTL_FILE包创建的任何文件将归属于Oracle用户所有。这些文件在创建时就已经具有操作系统为Oracle用户配置的特权。如果其它用户要在UTL_FILE之外访问这些文件的话,就需要操作系统变更这些文件的访问特权。既然UTL_FILE包涉及到操作系统对文件读写的特权问题,自然也就涉及到使用UTL_FILE包的安全性问题。UTL_FILE包的安全性通过两个方面来实现。1.
6、UTL_FILE包的使用必须要求用户被授予UTL_FILE包的EXECUTE特权。2.Oracle数据库通过限制UTL_FILE包可以访问的目录的范围来实现安全运行。授予用户或角色的UTL_FILE包的EXECUTE特权可以以SYS用户登录,然后执行下面的命令:GRANTEXECUTEONUTL_FILETOUSERNAME;如果希望数据库的所有的用户都可以使用该包,将上面命令中的USERNAME替换为PUBLIC。系统允许访问的目录由数据库初始化文件中的参数UTL_FILE_DIR说明。每个可以访问的目录都在初始化文件中用下面的参数行指定
7、:UTL_FILE_DIR=directory_name参数directory_name所指定的目录在很大程度上与操作系统有关。如果操作系统对大小写敏感,则directory_name也区分大小写字母。当有多个可以访问的目录时,初始化文件中参数UTL_FILE_DIR=又则用小括号引起来,多个目录之间用逗号分开,例如UTL_FILE_DIR=(d:dump1,e:dump1)。或者也可以用多行,每行用参数名称带参数,例如:UTL_FILE_DIR=d:dump1UTL_FILE_DIR=e:dump1关键要求“一行接一行”,如果中间
8、夹杂其它的参数,只有最后一个UTL_FILE_DIR被认可,其它之间的UTL_FILE_DIR参数不被认可。所有的UTL_FILE_DIR参数项在初始化文件中必须是相邻的。但是,
此文档下载收益归作者所有