mysql utl_file_PL/SQL--UTL_FILE包的使用介绍

在PL/SQL中,UTL_FILE包提供了文本文件输入和输出互功能。也就是说我们可以通过该包实现从操作系统级别来实现文件读取输入或者是

在PL/SQL中,UTL_FILE包提供了文本文件输入和输出互功能。也就是说我们可以通过该包实现从操作系统级别来实现文件读取输入或者是写入到操作系统文件。通过该包也可以将其他系统的数据加载到数据库中。如加载web服务器日志,用户登录数据库日志乃至Oracle日志文件等等。本文主要描述了UTL_FILE的功能以及通过实例演示并理解这个包下相关过程函数的用法。

1、UTL_FILE介绍

a、实现基于操作系统级别的读取与写入功能

b、该方式为基于服务器端的文本文件访问模式,不支持二进制文件

c、可以通过设置参数utl_file_dir来设置pl/sql访问操作系统文件的多个路径

d、所有用户可以读写utl_file_dir参数设定的目录,因此应考虑安全问题

e、也可以将参数utl_file_dir置空,而通过创建directory以及授予对directory权限来进行访问os文件(推荐方式)

2、UTL_FILE包中的过程和函数

a、UTL_FILE中定义的file_type为记录类型,如下所示其成员是私有的,不能够被直接引用或改变这个记录的组件。

TYPE file_type IS RECORD (

id BINARY_INTEGER,

datatype BINARY_INTEGER,

byte_mode BOOLEAN);

b、UTL_FILE中相关过程函数的功能说明

FCLOSE Procedure Closes a file

FCLOSE_ALL Procedure Closes all open file handles

FCOPY Procedure Copies a contiguous portion of a file to a newly created file

FFLUSH Procedure Physically writes all pending output to a file

FGETATTR Procedure Reads and returns the attributes of a disk file

FGETPOS Function Returns the current relative offset position within a file, in bytes

FOPEN Function Opens a file for input or output

FOPEN_NCHAR Function Opens a file in Unicode for input or output

FREMOVE Procedure Deletes a disk file, assuming that you have sufficient privileges

FRENAME Procedure Renames an existing file to a new name, similar to the UNIX mv function

FSEEK Procedure Adjusts the file pointer forward or backward within the file by the number of bytes specified

GET_LINE Procedure Reads text from an open file

GET_LINE_NCHAR Procedure Reads text in Unicode from an open file

GET_RAW Procedure Reads a RAW string value from a file and adjusts the file pointer ahead by the number of bytes read

IS_OPEN Function Determines if a file handle refers to an open file

NEW_LINE Procedure Writes one or more operating system-specific line terminators to a file

PUT Procedure Writes a string to a file

PUT_LINE Procedure Writes a line to a file, and so appends an operating system-specific line terminator

PUT_LINE_NCHAR Procedure Writes a Unicode line to a file

PUT_NCHAR Procedure Writes a Unicode string to a file

PUTF Procedure A PUT procedure with formatting

PUTF_NCHAR Procedure A PUT_NCHAR procedure with formatting, and writes a Unicode string to a file, with formatting

PUT_RAW Procedure Accepts as input a RAW data value and writes the value to the output buffer

3、演示ULT_FILE用法

a、使用UTL_FILE的主要步骤(使用directory方式)

--先创建用于存放os文件的目录

scott@USBO> ho mkdir -p /u03/database/usbo/db_utl_dir

--在数据库层面添加directory

scott@USBO> create directory db_utl_dir as '/u03/database/usbo/db_utl_dir';

--权限授予

scott@USBO> grant read,write on directory db_utl_dir to public;

b、从SQL查询写入到数据文件

DECLARE

vsfile UTL_FILE.file_type; --->定义用于接收文件句柄的类型

v_cnt PLS_INTEGER := 0;

BEGIN

vsfile :=

UTL_FILE.fopen ('DB_UTL_DIR', --->使用fopen打开文件,定义了文件路径,文件名,读写方式以及每一行字符的最大长度,,缺省为1024

'emp.txt',

'W',

200);

FOR i IN (SELECT t.ename || ',' || t.job AS msg --->使用了一个for循环来读取scott.emp表

FROM scott.emp t WHERE t.sal>2000)

LOOP

UTL_FILE.put_line (vsfile, i.msg); --->将for循环查询的内容使用put_line写入到文件

v_cnt := v_cnt + 1; --->计数器,用于统计写入的记录数

END LOOP;

UTL_FILE.fflush (vsfile);

UTL_FILE.fclose (vsfile);

DBMS_OUTPUT.put_line (v_cnt || ' rows unloaded');

END;

/

6 rows unloaded

PL/SQL procedure successfully completed.

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值