1 Utl_File包简介

Oracle的UTL_FILE包用来实现对磁盘文件的I/O操作。

(1)Oracle10g之前的版本需要指定utl_file包可以操作的目录。

方法:

1、alter system set utl_file_dir=‘e:/utl‘ scope=spfile;

2、在init.ora文件中,配置如下:UTL_FILE=E:/utl或者UTL_FILE_DIR=E:/utl;

(2)Oracle10g之后的版本,只需要先创建一个路径即可。

2 Utl_file包的依赖关系

SELECT name FROM dba_dependencies WHERE referenced_name = ‘UTL_FILE‘

UNION

SELECT referenced_name FROM dba_dependencies WHERE name = ‘UTL_FILE‘;

3 UTL_FILE常用方法

3.1 FOPEN()

英文解释:(1) Open a file for read operations

FOPEN会打开指定文件并返回一个文件句柄用于操作文件。

utl_file.fopen(

file_location IN VARCHAR2,  --路径

file_name     IN VARCHAR2,   --文件名称

open_mode     IN VARCHAR2,   --打开模式 R 读 W 写 A 追加

max_linesize  IN BINARY_INTEGER DEFAULT NULL)

RETURN file_type;

参数

location    文件地址

filename    文件名

openmode    打开文件的模式(参见下面说明)

3种文件打开模式:

(1) R只读模式。一般配合UTL_FILE的GET_LINE来读文件。

(2) W写(替换)模式。文件的所有行会被删除。PUT, PUT_LINE, NEW_LINE, PUTF和FFLUSH都可使用。

(3) A写(附加)模式。原文件的所有行会被保留。在最末尾行附加新行。

PUT, PUT_LINE, NEW_LINE, PUTF和FFLUSH都可使用max_linesize  文件每行最大的字符数,包括换行符。最小为1,最大为32767。

打开文件时注意以下几点:

*   文件路径和文件名合起来必须表示操作系统中一个合法的文件。

*   文件路径必须存在并可访问;FOPEN并不会新建一个文件夹。

*   如果你想打开文件进行读操作,文件必须存在;如果你想打开文件进行写操作,文件不存在时,会新建一个文件。

*   如果你想打开文件进行附加操作,文件必须存在。A模式不同于W模式。文件不存在时,会抛出INVALID_OPERATION异常。

*   FOPEN 会抛出以下异常:

(1)UTL_FILE.INVALID_MODE

(2)UTL_FILE.INVALID_OPERATION

(3)UTL_FILE.INVALID_PATH

(4)UTL_FILE.INVALID_MAXLINESIZE

3.2 IS_OPEN()

英文解释:Returns True If A File Handle Is Open: Otherwise False

utl_file.is_open(file IN FILE_TYPE) RETURN BOOLEAN;

3.3 GET_LINE()

英文解释:Read a Line from a file

用法:

utl_file.getline(

file   IN  FILE_TYPE,

buffer OUT VARCHAR2,

len    IN  BINARY_INTEGER DEFAULT NULL);

UTL_FILE只提供一个方法去读取数据:GET_LINE 。读取指定文件的一行到提供的缓存。

函数原型:

PROCEDURE UTL_FILE.GET_LINE (file IN UTL_FILE.FILE_TYPE,  buffer OUT VARCHAR2);

参数说明:

file    由FOPEN返回的文件句柄

buffer  读取的一行数据的存放缓存

buffer必须足够大。否则,会抛出VALUE_ERROR 异常。行终止符不会被传进buffer。

异常:

NO_DATA_FOUND

VALUE_ERROR

UTL_FILE.INVALID_FILEHANDLE

UTL_FILE.INVALID_OPERATION

UTL_FILE.READ_ERROR

3.4 PUT()

英文解释:Writes a string to a file

用法:

utl_file.put(file IN FILE_TYPE, buffer IN VARCHAR2);

函数原型:

PROCEDURE UTL_FILE.PUT (file IN UTL_FILE.FILE_TYPE, buffer OUT VARCHAR2);

参数说明:

file   由FOPEN返回的文件句柄

buffer  包含要写入文件的数据缓存;Oracle8.0.3及以上最大允许32kB,早期版本只有1023B。

UTL_FILE.PUT输出数据时不会附加行终止符。

异常:

UTL_FILE.INVALID_FILEHANDLE

UTL_FILE.INVALID_OPERATION

UTL_FILE.WRITE_ERROR

3.5 NEW_LINE()

英文解释:Writes one or more operating system-specific line terminators to a file

用法:

utl_file.new_line(file IN FILE_TYPE, lines IN NATURAL := 1);

UTL_FILE.NEW_LINE

在当前位置输出新行或行终止符,必须使用NEW_LINE来结束当前行,或者使用PUT_LINE输出带有行终止符的完整行数据。

函数原型:

PROCEDURE UTL_FILE.NEW_LINE (file IN UTL_FILE.FILE_TYPE, lines IN NATURAL := 1);

参数说明:

file   由FOPEN返回的文件句柄

lines   要插入的行数

注意:

如果不指定lines参数,NEW_LINE会使用默认值1,在当前行尾换行。如果要插入一个空白行,可以使用以下语句:

UTL_FILE.NEW_LINE (my_file, 2);

如果lines参数为0或负数,什么都不会写入文件。

异常:

VALUE_ERROR

UTL_FILE.INVALID_FILEHANDLE

UTL_FILE.INVALID_OPERATION

UTL_FILE.WRITE_ERROR

3.6 PUT_LINE()

英文解释:Writes a line to a file.  Appends an operating system-specific line terminator

用法:

utl_file.put_line(

file      IN FILE_TYPE,

buffer    IN VARCHAR2,

autoflush IN BOOLEAN DEFAULT FALSE);

UTL_FILE.PUT_LINE

输出一个字符串以及一个与系统有关的行终止符

函数原型:

PROCEDURE UTL_FILE.PUT_LINE (file IN UTL_FILE.FILE_TYPE, buffer IN VARCHAR2);

参数说明:

file   由FOPEN返回的文件句柄

buffer   包含要写入文件的数据缓存;Oracle8.0.3及以上最大允许32kB,早期版本只有1023B

注意:

在调用UTL_FILE.PUT_LINE前,必须先打开文件。

异常:

UTL_FILE.INVALID_FILEHANDLE

UTL_FILE.INVALID_OPERATION

UTL_FILE.WRITE_ERROR

3.7 PUTF()

英文解释:A PUT procedure with formatting

utl_file.putf(

file   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);

UTL_FILE.PUTF

以一个模版样式输出至多5个字符串,类似C中的printf

函数原型:

PROCEDURE UTL_FILE.PUTF

(file 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);

参数说明:

file   由FOPEN返回的文件句柄

format   决定格式的格式串

argN   可选的5个参数,最多5个格式串可使用以下样式

%s  在格式串中可以使用最多5个%s,与后面的5个参数一一对应%s会被后面的参数依次填充,如果没有足够的参数,%s会被忽视,不被写入文件

n  换行符。在格式串中没有个数限制

异常:

UTL_FILE.INVALID_FILEHANDLE

UTL_FILE.INVALID_OPERATION

UTL_FILE.WRITE_ERROR

3.8 PUT_RAW()

英文解释:Accepts as input a RAW data value and writes the value to the output buffer

用法:

utl_file.put_raw(

file      IN file_type,

buffer    IN RAW,

autoflush IN BOOLEAN DEFAULT FALSE

);

3.9 FCLOSE()

函数作用:关闭命名的文件:

utl_file.fclose(file IN OUT file_type);

3.10 FCLOSE_ALL()

函数作用:关闭所有文件

3.11 FRENAME()

英文解释:Rename An Operating System File

utl_file.frename (

src_location  IN VARCHAR2,

src_filename  IN VARCHAR2,

dest_location IN VARCHAR2,

dest_filename IN VARCHAR2,

overwrite     IN BOOLEAN DEFAULT FALSE);

BEGIN

utl_file.frename(v_pathna, ‘test.txt‘, v_pathna, ‘x.txt‘, TRUE);

END frename;

/

存储过程FRENAME修改一个文件的名称,这样我们可以把一个文件从一个位置移动到另外一个位置。

函数原型:

FRENAME(location VARCHAR2,

filename VARCHAR2,

dest_dir VARCHAR2,

dest_file VARCHAR2,

[ overwrite BOOLEAN ])

参数:

location

目录名称,存放在pg_catalog.edb_dir.dirname中,这个目录包含要改名的文件。

filename

要改名的源文件名称。

dest_dir

目录名称,存放在pg_catalog.edb_dir.dirname中,这个目录是被改名文件所在的目录。

dest_file

原始文件的新名称。

overwrite

如果设置为”true”,在dest_dir目录中覆盖任何名为dest_file的文件。若设置为”false”,就会产生异常。这是缺省情况。

3.12 FREMOVE()

英文解释:Delete An Operating System File

utl_file.fremove(location IN VARCHAR2, filename IN VARCHAR2);

-- dump.txt is created in the FCOPY demo

BEGIN

utl_file.fremove(v_pathna, ‘dump.txt‘);

END fremove;

/

3.13 FFLUSH()

英文解释:Physically writes pending data to the file identified by the file handle

用法:

utl_file.fflush(file IN file_type);

函数原型:

PROCEDURE UTL_FILE.FFLUSH (file IN UTL_FILE.FILE_TYPE);

参数说明:

file   由FOPEN返回的文件句柄

注意:

操作系统可能会缓存数据来提高性能。因此可能调用put后,打开文件却看不到写入的数据。在关闭文件前要读取数据的话可以使用UTL_FILE.FFLUSH。

典型的使用方法包括分析执行进度和调试纪录。

异常:

UTL_FILE.INVALID_FILEHANDLE

UTL_FILE.INVALID_OPERATION

UTL_FILE.WRITE_ERROR

3.14 FCOPY()

英文解释:Copies a contiguous portion of a file to a newly created file

utl_file.fcopy(

src_location  IN VARCHAR2,

src_filename  IN VARCHAR2,

dest_location IN VARCHAR2,

dest_filename IN VARCHAR2,

start_line    IN BINARY_INTEGER DEFAULT 1,

end_line      IN BINARY_INTEGER DEFAULT NULL);

BEGIN

utl_file.fcopy(v_pathna, ‘test.txt‘, v_pathna, ‘dump.txt‘);

END;

UTL_FILE.FCOPY

存储过程FCOPY把一个文件中文本拷贝到另外一个文件中。

函数原型:

FCOPY(location VARCHAR2, filename VARCHAR2,dest_dir VARCHAR2, dest_file VARCHAR2[, start_line PLS_INTEGER [, end_line PLS_INTEGER ] ])

参数

location

表示目录名称,存放在pg_catalog.edb_dir.dirname中,这个目录包含要拷贝的文件。

filename

要拷贝文件的名称。

dest_dir

表示目录名称,存放在pg_catalog.edb_dir.dirname中,是源文件要拷贝到目的目录。

dest_file

目标文件的名称。

start_line

源文件中文本行号,用于指定开始拷贝的位置。缺省值是1。

end_line

源文件中最后一行要拷贝文本的行号。如果省略这个参数或者这个参数为空,那么就一直拷贝到文件中最后一行。

原文:http://www.cnblogs.com/oracle-dba/p/3856130.html

oracle utl_file fcopy,ORACLE之UTL_FILE包详解相关推荐

  1. Oracle 11g R2+RAC+ASM+redhat安装详解1

    Oracle RAC是Oracle Real Application Cluster的简写,官方中文文档一般翻译为"真正应用集群",它一般有两台或者两台以上同构计算机及共享存储设备 ...

  2. 抢鲜体验:Oracle 19C单实例数据库安装步骤详解

    抢鲜体验:Oracle 19C单实例数据库安装步骤详解 原创: 李宏达 数据和云 今天 作者:李宏达,云和恩墨北区交付工程师. 大家一直期待的 Oracle Database 19c 今天已经提供公开 ...

  3. oracle itl解析,oracle数据块dump文件中ITL详解

    oracle数据块dump文件中ITL详解 dump出Oracle block后,可以看到事物槽,包含有事物槽号(ITL),XID,UBA,FLAG,LCK,SCN. 本文主要讨论FLAG标记的规则, ...

  4. Oracle创建表语句(Create table)语法详解及示例

    Oracle创建表语句(Create table)语法详解及示例   创建表(Create table)语法详解 1. ORACLE常用的字段类型ORACLE常用的字段类型有 VARCHAR2 (si ...

  5. oracle回滚断查询,Oracle回滚段使用查询代码详解

    大批量执行DML语句造成回滚段大量占用,又回退操作,如何直观查询数据回滚情况? 单机环境 查询回滚执行进度 sql;"> select /*+ rule */s.sid,r.name ...

  6. 视频教程-Oracle数据库从入门到实用教程详解-Oracle

    Oracle数据库从入门到实用教程详解 全栈工程师,2010年从事软件开发以及软件教育培训工作,至今将近十余年,在项目的开发,设计,到管理上积累了丰富的实战经验,教学风格上通俗易懂,问题解答环节一对一 ...

  7. oracle rac 环境配置文件,学习笔记:Oracle RAC spfile参数文件配置案例详解

    天萃荷净 rac中的spfile探讨,记录一下Oracle RAC搭建完成后关于spfile参数文件的配置案例,与更改RAC环境中参数文件的方法 今天朋友的的rac,因为被同事做数据库升级,分别在两个 ...

  8. oracle 误删除表数据,Oracle误删除表数据后的数据恢复详解

    Oracle误删除表数据后的恢复详解 测试环境: SYSTEM:IBM AIX 5L                         Oracle Version:10gR2 1. undo_rete ...

  9. java metadata 使用_java 查询oracle数据库所有表DatabaseMetaData的用法(详解)

    一 . 得到这个对象的实例 Connection con ; con = DriverManager.getConnection(url,userName,password); DatabaseMet ...

  10. oracle中imp命令详解,ORACLE EXPDP IMPDP数据导入导出命令详解及同EXP IMP命令详细对照...

    ORACLE EXPDP IMPDP数据导入导出命令详解及同EXP IMP 命令详细对比 一.EXPDP IMPDP EXP IMP 可以实现 1.可以实现逻辑备份和逻辑恢复 2.可以在数据库用户之间 ...

最新文章

  1. python卸载pip重新安装_pip无法正常使用卸载并重新安装
  2. HDU 5785 interesting
  3. 自定义控件例如LinearLayout 的三种方法
  4. c# 学习笔记 (3) 窗体单例模式
  5. SpringCloud分布式事务,版本一:未加事务版本
  6. #define const typedef
  7. PAT (Basic Level) - 1025 反转链表(模拟)
  8. 重磅!win10无法安装.NET Framework 3.5服务解决办法(附离线安装包下载)
  9. python中 numpy_Python中的Numpy
  10. zynq开发系列3:GPIO连接MIO通过按键控制LED灯亮起
  11. 小前端眼里的大前端:GMTC 2018 参会小结
  12. 经典机器学习系列(七)【聚类分析】
  13. \opencv\build\x86下的vc6、vc7、vc8、vc9、vc10、vc11、vc12、vc14、vc15是什么意思?
  14. 强化学习学习总结(二)——QLearning算法更新和思维决策
  15. 域名链接到服务器指定端口
  16. Supplier和Vendor的区别
  17. RFID之M1卡数据分析
  18. Java_数组(声明、创建、初始化、复制、增强型for循环、二维数组、排序、Arrays类)
  19. 2017年idc机构计算机,IDC:2017年平板电脑逆势成长
  20. MAC M1安装docker并拉取mysql镜像

热门文章

  1. 个人头像-----资源
  2. 推一款基于原生的小程序(埋点)插件:ani-weapp
  3. JZ 20 表示数值的字符串:抽象与逻辑练习
  4. UTF-8编码下\u7528\u6237转换为中文汉字
  5. utf-8子系存储方式(下)
  6. 无法加载文件 D:\xiaohu\uumstest\venv\Scripts\activate.ps因为在此系统上禁止运行脚本。
  7. python 抓取lol主播排行
  8. 有趣的小游戏——猜数字
  9. C++播放音频mav文件和mp3文件
  10. 洛谷P1569 [USACO11FEB]属牛的抗议Generic Cow Prote…