`
wuhuizhong
  • 浏览: 684533 次
  • 性别: Icon_minigender_1
  • 来自: 中山
社区版块
存档分类
最新评论

Using UTL_FILE in Oracle10g XE

 
阅读更多

Getting Started

In order to use UTL_FILE package, which is owned by SYS, you have to grant EXECUTE privilege to user after you log in as SYS.

Execute the following commands at SQL> prompt after starting SQL*PLUS.

connect sys/password as sysdba


Provide the password of SYS account, which is given at the time of installation of Oracle 10g XE.

Give EXECUTE privilege to required user or PUBLIC (all users) as follows.

grant execute on UTL_FILE to public;


The next important step is to create a logical directory (directory alias) in Oracle that points to physical directory in filesystem. However, directory alias can be created only by DBA (SYS or SYSTEM). So after you logged in as SYS, create directory alias for ORACLE folder in C:\ and grant read and write permissions to PUBLIC as follows.

create directory filesdir as 'c:\oracle';
grant read on directory filesdir to public;
grant write on directory filesdir to public;


Now, you can log into HR account and create a table - NAMES as follows.

connect hr/hr;

create table names
( 
 name varchar2(30) 
);

We also need a simple text file NAMES.TXT in C:\ORACLE as follows. NAMES.TXT contains one line for one name.

Kevin
Tom
Steve
George

Now, we are ready to write programs that use UTL_FILE package.

Reading NAMES.TXT

The following program uses UTL_FILE package to read one line at a time from NAMES.TXT file and inserts it into NAMES table. It uses FOPENGET_LINE and FCLOSE methods of UTL_FILEpackage.

DECLARE
 line VARCHAR2(100);
 namesfile UTL_FILE.FILE_TYPE;
BEGIN
 --  Syntax : FOPEN ( directory alias, filename, open mode)
 namesfile  := UTL_FILE.FOPEN('FILESDIR','NAMES.TXT','R');    -- open in read mode 
 LOOP
   -- read  a line from NAMES.TXT
   -- NO_DATA_FOUND exception occurs when you reach end of file
   -- Syntax : GET_LINE( filename, variable , max length)
   UTL_FILE.GET_LINE(namesfile,line,100);
   insert into names values( line);   -- insert into NAMES table
 END LOOP;
 EXCEPTION
   WHEN OTHERS THEN
     UTL_FILE.FCLOSE(namesfile);    -- close file
   WHEN OTHERS THEN
     dbms_output
END;

After running the above program, you will see names inserted into NAMES table. Use the following query to list rows from NAMES table.

select * from names;

Writing into JOBS.TXT

UTL_FILE provides PUT_LINE method to write a complete line into file along with new line. For this to work, the file must be opened in write(w) mode. The following program takes job titles from JOBS table and writes each title on a separate line in JOBS.TXT file. However, note you must have WRITE permission on the directory to write into file, which we have granted to PUBLIC from SYS  in getting started section.

DECLARE
JOBSFILE UTL_FILE.FILE_TYPE;
-- TAKE ALL JOB TITLES FROM JOBS
CURSOR JOBSCUR IS
  SELECT JOB_TITLE FROM JOBS ORDER BY JOB_TITLE;
BEGIN
 -- OPEN FILE FOR WRITING
 JOBSFILE := UTL_FILE.FOPEN('FILESDIR','JOBS.TXT','W');
 
 -- TAKE ONE RECORD FROM CURSOR
 FOR REC IN JOBSCUR
 LOOP
   UTL_FILE.PUT_LINE(JOBSFILE, REC.JOB_TITLE);  -- WRITE INTO FILE
 END LOOP;
 
 UTL_FILE.FCLOSE(JOBSFILE);  -- CLOSE FILE
 
EXCEPTION
 WHEN OTHERS THEN
   DBMS_OUTPUT.PUT_LINE( 'ERROR -->' ||  SQLERRM);
END;


After you run the above program, open JOBS.TXT file from C:\ORACLE folder to see job titles written into it.

UTL_FILE package does provide some more interesting methods. For more details on this Oracle supplied package, please read Oracle documentation on UTL_FILE package.

 

分享到:
评论

相关推荐

    Oracle UTL_FILE的使用

    Oracle学习]ORACLE的UTL_FILE包简析 包UTL_FIle用于读写操作系统的文件,前提是首先创建Directory对象、授权。然后就可以使用UTL_FILE包中提供的类型、过程、函数来读取

    UTL_FILE用法详解

    UTL_FILE 是 Oracle 数据库中提供的一个包,提供了在操作系统层面上对文件系统中文件的读写功能。非超级用户在使用 UTL_FILE 中任何函数或存储过程前必须由超级用户授予在这个包上的 EXECUTE 权限。 在使用 UTL_...

    oracle utl_file包的用法

    ### Oracle UTL_FILE 包详解 #### 概述 `UTL_FILE`是Oracle数据库中一个重要的包,它提供了一套完整的文件输入/输出(I/O)操作接口,允许PL/SQL程序直接读写文件系统中的文件。这使得在Oracle环境中进行文件处理...

    utl_file包介绍

    Oracle UTL_FILE 包概述 UTL_FILE 包是 Oracle 提供的一个文件操作包,主要用于读写文件和目录。该包的应用非常广泛,且非常实用,因为 Oracle 虽然有 SQL*Loader 可以将文本的内容读到数据库里,但是不能将数据库...

    在oracle9i中设置utl_file_dir参数.txt

    在Oracle 9i数据库系统中,`UTL_FILE_DIR`参数是用于控制PL/SQL程序在执行时可以访问的文件目录的重要配置项。这个参数的设置对于实现数据的读写操作、日志记录以及与其他文件系统的交互至关重要。下面将详细探讨...

    UTL_FILE操作文件代码

    这段代码展示了如何使用Oracle的UTL_FILE包来处理文件的读写操作,并且能够将文件内容存储到数据库的BLOB字段中。下面将对各个部分进行详细解读。 ### UTL_FILE简介 UTL_FILE是Oracle提供的一个用于文件I/O操作的...

    ORACLE使用UTL_FILE记录日志简介

    Oracle数据库系统提供了丰富的内置工具和包,以满足各种复杂的需求,其中之一就是UTL_FILE包,它允许我们在PL/SQL程序中直接操作文件,包括读取、写入和管理文件。这篇博客将深入介绍如何利用UTL_FILE在Oracle中记录...

    通过ORACLE的UTL_HTTP工具包发送包含POST参数的请求

    ### 通过ORACLE的UTL_HTTP工具包发送包含POST参数的请求 #### 概述 在Oracle环境中,经常需要与外部系统进行交互,特别是在需要从Web服务器获取数据或向其发送数据的情况下。`UTL_HTTP`是Oracle提供的一款强大工具...

    oracle plsql 通过utl_http调用 webservice

    Oracle PL/SQL是一种在Oracle数据库中编写存储过程和函数的语言,它结合了SQL的数据库操作能力和PL/SQL的编程灵活性。在本示例中,我们将深入探讨如何利用UTL_HTTP包来调用Web Service,这是一个非常实用的功能,...

    oracle中utl_file包读写文件操作实例学习

    Oracle中的UTL_FILE包是一个非常实用的工具,它允许数据库用户在Oracle服务器上进行文件的读写操作。这个包提供了多种函数和过程,使得在PL/SQL中处理文本文件变得简单。下面我们将深入探讨如何使用UTL_FILE进行文件...

    utl_file.txt

    ### Oracle的UTL_FILE工具包:操作系统的文本文件读写 在Oracle数据库环境中,UTL_FILE包为PL/SQL程序提供了读写操作系统文本文件的能力。它提供了一个受限版本的操作系统流文件I/O功能,使数据库应用程序能够直接...

    oracle注入utl_http方法.doc

    然而,UTL_HTTP 方法也存在一些限制,例如需要 Oracle 数据库版本高于 10g,且 UTL_HTTP 包需要被安装和启用。 在实际攻击中,攻击者可以使用 UTL_HTTP 方法来实现以下攻击: 1. 获取敏感信息:攻击者可以使用 UTL...

    utl_http.request包探测基本信息.txt

    根据提供的文件信息,我们可以推断出此文档与Oracle数据库中的UTL_HTTP包有关,并涉及到如何利用该包进行一些基本信息的探测。以下将详细介绍UTL_HTTP包的基本概念、用途以及示例代码中的具体应用场景。 ### UTL_...

    Oracle P/L SQL实现FTP上传、下载功能

    ai_LocalFilename in out Nocopy UTL_File.File_Type, as_TransferMethod in VarChar2 Default Null ); Procedure p_GetFileList( ac_Connection in out Nocopy Connection, afl_List out ...

    oralce plsql 使用utl_tcp实现上传文件的功能

    可以使用PL/SQL的文件I/O函数,如`UTL_FILE.GET_LINE`或`UTL_FILE.READ`,来读取文件内容,然后用`UTL_TCP.WRITE_LINE`或`UTL_TCP.WRITE_RAW`将其写入网络连接。 文件传输完成后,记得关闭连接以释放资源: ```sql...

    oracle利用UTL-HTTP包访问SOAP、HTTP接口并通过管道函数解析xml响应文件用游标以表方式输出

    ### Oracle 使用 UTL_HTTP 访问 SOAP/HTTP 接口并解析 XML 响应 #### 一、使用 utl_http 包之前需要做的数据库配置 为了确保 Oracle 数据库能够通过网络进行 HTTP 请求,首先需要对数据库进行一些配置,具体包括...

    utl_mail_scheduler

    Create Or Replace Procedure send_mail_file Is Begin utl_mail.send_attach_varchar2( sender => 'mymail@oracle.com', recipients => 'you@oracle.com', message => 'Test', subject => 'Hello', mime_...

    ibm_utl_dsa_dsytb7x-9.40_portable_windows_x86-64

    IBM服务器DSA(动态系统诊断),window系统下手机服务器日志,如有疑问请留言。

    oracle 触发器实时调用java 中http接口

    在Oracle数据库中,触发器是一种特殊类型的存储过程,它会在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时自动执行。在这个场景中,我们关注的是一个特定的触发器,它在插入数据后被调用,并通过存储过程来...

    utl_tcp.zip

    delphi7做Socket的服务器端,oracle的utl_tcp做Socket的Cliient端.Utl_tcp向server发送信息,并从Server端接收反馈。utl_tcp在PL/SQL Developer 中实现。全部源码。

Global site tag (gtag.js) - Google Analytics