利用ORACLE UTL_FILE包可以使文本文件转入进数据表,反之亦然:
1: 建立文件目录
首先在数据库服务器上建立相应的文件目录。
1.1 方法:
在初始化文件配置文件init.ora的配置中将UTL_FILE_DIR = 'E:/temp'指定路径;
1.2 方法:
创建路径对象:Create directory test_dir as 'e:\temp'
建议用第二种方法;
2: 打开和关闭文件
所有的文件句柄都拥有UTL_FILE.FILE_TYPE,FILE_TYPE在UTL_FILE规范中进行了定义。
2.1: FOPEN(location in varchar2, filename in varchar2, open_mode in varchar2) return FILE_TYPE;
Location 是路径参数,FILENAME 是文件名,OPEN_MODE是打开模式,'R'是读文本,'W'是写文本,'A'是附加文本,参数不分大小写,如果指定'A'但是文件不存在,它会用'W'先创建出来,'W'有覆盖的功能;
2.2: FCLOSE(file_handle in out file_type);
唯一的参数是文件句柄,就是关闭文件;FCLOSE_ALL关闭所有文件句柄;
2.3: IS_OPEN(file_handle in file_type) return Boolean;
判断文件是否打开;
3: 文件输出函数:
3.1: PUT(file_handle in file_type, buffer in varchar2);
文件输出,但是不会在文件中附加新行字符(newline),必须用put_line或者new_line向文件中输入终结符;
3.2: NEW_LINE(file_handle in file_type, lines in natural := 1) ;
向文件中写入一个或者多个行终结符;
3.3: PUT_LINE(file_handle in file_type, buffer in varchar2);
等价PUT后接着用NEW_LINE;
3.4: PUTF(file_handle in file_type, format in varchar2,
Arg1 in varchar2 default null,
Arg2 in varchar2 default null,
Arg3 in varchar2 default null,
Arg4 in varchar2 default null,
Arg5 in varchar2 default null)
和PUT类似,但是它允许输出字符串是带格式的,格式字符中n是换行,%s被可选参数取代;
例如:
Declare
v_outputfile utl_file.file_type;
v_name varchar2(20) := 'scott';
begin
v_outputfile := utl_file.fopen(..);
utl_file.putf(v_outputfile,
'hi there! n my name is %s,and I am a %s major.n',
V_name,
'Computer science');
Fclose(v_outputfile);
end;
输出文件格式:
hi there!
my name is scott ,and I am a Computer science major.
3.5: 输出文件应用实例:
create or replace procedure p_mmr_new
(p_start_time out date,
p_end_time out date)
is
v_file UTL_FILE.FILE_TYPE;
v_string varchar2(100);
v_error exception;
v_i number;
cursor cur_ms_no is
select distinct substr(trim(a.ms_no),1,11)
from msno.t_upload_msno a,
msno.t_msno_black b
where substr(a.ms_no,1,11) = b.ms_no(+)
and b.ms_no is null;
v_count number;
v_ms_no varchar2(20);
begin
p_start_time:=sysdate;
v_count:=0;
-- insert,'TEST_DIR'要大写
v_file := UTL_FILE.FOPEN('TEST_DIR','ivr170.txt', 'w',32767);
open cur_ms_no ;
loop
fetch cur_ms_no into v_ms_no;
exit when cur_ms_no%notfound;
UTL_FILE.PUT_line(v_file, v_ms_no);
v_count:=v_count+1;
if v_count>=5000 then
UTL_FILE.fflush(v_file);
--UTL_FILE.FCLOSE(v_file);
--v_file := UTL_FILE.FOPEN('TEST_DIR','v_ms_no.txt', 'a',32767);
v_count:=0;
end if;
end loop;
UTL_FILE.FCLOSE(v_file);
close cur_ms_no;
--close
p_end_time:=sysdate;
EXCEPTION
WHEN v_error Then
UTL_FILE.FCLOSE(v_file);
RETURN;
end;
4:文件输入
4.1 get_line(file_handle in file_type, buffer out varchar2);
从文件中读出数据;
示例:
Declare
V_newline varchar2(200);
begin
v_filehandle := utl_file.fopen(p_filedir, p_filename, 'r');
utl_file.get_line(vfilehandle, v_newline);
insert into t1 (tip) values(v_newline);
end;
本文转自:http://blog.csdn.net/alex197963/archive/2008/01/08/2030201.aspx
分享到:
相关推荐
`UTL_FILE`是Oracle数据库中一个重要的包,它提供了一套完整的文件输入/输出(I/O)操作接口,允许PL/SQL程序直接读写文件系统中的文件。这使得在Oracle环境中进行文件处理变得简单而直接。然而,使用`UTL_FILE`包前...
Oracle学习]ORACLE的UTL_FILE包简析 包UTL_FIle用于读写操作系统的文件,前提是首先创建Directory对象、授权。然后就可以使用UTL_FILE包中提供的类型、过程、函数来读取
Oracle UTL_FILE 包概述 UTL_FILE 包是 Oracle 提供的一个文件操作包,主要用于...UTL_FILE 包是 Oracle 提供的一个功能强大且实用的文件操作包,广泛应用于各种文件操作场景中,帮助开发者快速、高效地实现文件操作。
UTL_FILE 用法详解 UTL_FILE 是 Oracle 数据库中提供的一个包,提供了在操作系统层面上对...使用 UTL_FILE 的优点是可以在 Oracle 数据库中直接操作文件系统,但是需要注意文件权限和路径的正确性,以避免异常的发生。
Oracle中的UTL_FILE包是一个非常实用的工具,它允许数据库用户在Oracle服务器上进行文件的读写操作。这个包提供了多种函数和过程,使得在PL/SQL中处理文本文件变得简单。下面我们将深入探讨如何使用UTL_FILE进行文件...
UTL_FILE是Oracle提供的一个用于文件I/O操作的标准包。它允许用户在PL/SQL程序中读取、写入或删除文件系统中的文件。这个包对于那些需要与文件系统交互的应用来说非常有用。 ### 程序结构解析 该程序定义了一个名...
`UTL_FILE_DIR`参数允许用户指定一个或多个目录路径,这些目录中的文件可以被PL/SQL程序通过`UTL_FILE`包进行读写操作。这一功能为数据库应用程序提供了直接访问操作系统文件的能力,而无需通过复杂的外部过程或操作...
### Oracle的UTL_FILE工具包:操作系统的文本文件读写 在Oracle数据库环境中,UTL_FILE包为PL/SQL程序提供了读写操作系统文本文件的能力。它提供了一个受限版本的操作系统流文件I/O功能,使数据库应用程序能够直接...
Oracle数据库系统提供了丰富的内置工具和包,以满足各种复杂的需求,其中之一就是UTL_FILE包,它允许我们在PL/SQL程序中直接操作文件,包括读取、写入和管理文件。这篇博客将深入介绍如何利用UTL_FILE在Oracle中记录...
可以使用PL/SQL的文件I/O函数,如`UTL_FILE.GET_LINE`或`UTL_FILE.READ`,来读取文件内容,然后用`UTL_TCP.WRITE_LINE`或`UTL_TCP.WRITE_RAW`将其写入网络连接。 文件传输完成后,记得关闭连接以释放资源: ```sql...
Oracle数据库的UTL_FILE包是一个内置的PL/SQL包,它允许数据库直接访问和操作服务器端的磁盘文件,从而实现数据库与文件系统的交互。这个包提供了一系列过程和函数,如`popen`、`flush`、`put`、`put_line`、`get_...
UTL_MAIL是Oracle提供的一个用于发送电子邮件的内置程序包。通过UTL_MAIL,开发人员可以在Oracle环境中轻松实现邮件通知功能,这对于系统监控、错误报告及日常业务处理都非常有用。 ##### 安装与配置UTL_MAIL 1. *...
在Oracle数据库中,有时我们需要将业务数据导出为文本格式,这通常涉及到使用UTL_FILE包,这是一个内置的PL/SQL包,允许在数据库级别进行文件操作,如读取和写入文件。 UTL_FILE_DIR参数是一个关键的初始化参数,它...
Oracle P/L SQL实现文件压缩、解压功能,以下是此过程包的头部,包体经常打包处理plb,感兴趣用户可以下载下来。 Create or Replace Package UTL_ZIP AUTHID CURRENT_USER as Type File_List is Table of Clob; -...
Oracle P/L SQL实现FTP上传、下载功能,以下是此过程包的头部,包体经常打包处理plb,感兴趣用户可以下载下来。 --Oracle上的FTP功能 Create or Replace Package UTL_FTP AUTHID CURRENT_USER as Type Connection ...
这个包允许开发者无需离开Oracle环境就能与远程服务器进行文件的上传、下载以及管理,极大地简化了在数据库层面进行文件操作的流程。UTL_FTP在Oracle 8i、9i和10g版本中均得到了支持,确保了对多个旧版本数据库的...
UTL_FILE是Oracle提供的一个实用程序包,它允许用户在PL/SQL环境中访问和操作操作系统级别的文件。此包支持文件的打开、读取、写入和关闭等基本操作,对于需要在数据库环境中处理文件数据的应用场景非常有用。 ### ...