oracle自带的操作文件的包UTL_FILE介绍
因开发要求,需要对oracle里的数据与数据文件作比较。如采用客户端连接oracle的方式则显得小题大做,且工作量大,不易维护。直接采用存储过程,调用UTL_FILE包的公共过程,显得方便得多。
首先,需要把数据文件所在的目录注册到oracle中,用create directory。。。语句,然后把此目录的read,write权限grant给develop user account。注意create directory语句所需要的权限,方便得话直接用dba用户创建directory。
其次,文件操作如同C,C++,JAVA等高级语言差不多,主要有这几个方法:
UTL_FILE.fopen(d_output,v_filename,'r',32767);--32767很关键,如果文件一行的字节数过大,不指定这个参数,oracle只会读入最长默认长度的字符串,以至一行文本当成了“两行”读。
UTL_FILE.get_line(FILE_HANDLE,v_text);
UTL_FILE.put_line(FILE_HANDLE,v_text);
UTL_FILE.fclose(FILE_HANDLE);
对于要操作xls文件,一行数据采用chr(13)||chr(10)分割每列的数据。缺点是无法进行xls单元格的一些格式化,以及单元格合并等操作。因此虽然oracle有操作xls的基本功能,但只能完成最基本的功能。
最后,就是字符集的问题了,上面提到的get_line函数,是以字节为单位的,oracle也有按照双字节来处理的。但是对于UTF-8的文本,某些汉字的编码是三个字节,如果其中一个字节为OA,或OD,oracle就会误认为此行已经终止,这样也会把原本一行的内容当成“两行”来读取。oracle的字符集为简体中文,可能是oracle服务端的字符集不是UTF-8才导致这个问题,还是说oracle本身就存在这个问题,还有待确认下!
相关文档:
如何查询oracle中的关键字,执行:
select * from v$reserved_words
其实内嵌的function,就是一个系统的package内的function或者procedure。如果知道这个根本的原因,要找到这个内嵌的自带function就很简单了。
这里内嵌的自带的fucntion和procedure的对象,其实就是STANDARD这个包里的对象。而
Oracle里对于functi ......
使用CodeSmith生成oracle数据库表的实体层(Model)
http://blog.csdn.net/dacong/archive/2009/01/27/3853663.aspx
自己写的,CodeSimth中的例子都是msSQL server的,所以自己写了个支持Oracle数据库表的,不一定很完善,适用就好,数据类型没有周全考虑,只考虑了常用的一些类型,增加了个表名字属性,采用的.net2.0我结 ......
一、在ORACLE创建一个新的实例过程:
1、安装好ORACLE服务端。
2、创建数据库实例,使用ORAHOME目录下的"Configuration and Migration Tools"下的"Database Configuration Assistant"工具。
&nbs ......
(1)Pfile文件
Pfile(Parameter File)文件是基于文本格式的参数文件,含有数据库的配置参数。
Oracle 9i在安装时为每个数据库建立了一个Pfile,默认的名称为“init+例程名.ora”,这是一个文本文件,可以用任何文本编辑工具打开。
下表为数据库的初始化参 ......
我们假设是数据库管理员,为了数据库的安全,我们需要知道当前有多少连接数,最大支持多少连接数,可以用以下语句查询
select username,count(username),machine,status from v$session
&n ......