`
chenpenghui
  • 浏览: 39272 次
  • 性别: Icon_minigender_1
  • 来自: 台州
社区版块
存档分类
最新评论

utl_file实现oracle与OS的I/O交互

阅读更多

此文从某大神copy。

1、    建目录,并给相应用户授目录读写权限和UTL_FILE包执行权限

-- Create directory create or replace directory UTL_DIR as 'D:\AIX\ora_log\'; --以sys as sysdba grant read, write on directory SYS.UTL_DIR to JBK with grant option; grant execute on SYS.UTL_FILE to JBK;


  

2、    拷贝OS文件

 

BEGIN utl_file.fcopy('UTL_DIR', 'agmt_bal.dat', 'UTL_DIR', 'agmt_bal_'||to_char(sysdate-1,'YYYYMMDD')||'.dat'); END;


 

3、    读取OS文件

set serveroutput on ; declare f utl_file.file_type; x varchar2(2000); begin f := utl_file.fopen('UTL_DIR','edw_t01_repay_detail.txt','r'); loop begin utl_file.get_line(f,x); dbms_output.put_line(x); Exception when no_data_found then exit; end; end loop; end;


 

 

4、    OS文件中写ORACLE日志

CREATE OR REPLACE PROCEDURE write_log_to_file (write_text varchar2) IS fileID UTL_FILE.FILE_TYPE; BEGIN fileID := UTL_FILE.FOPEN('UTL_DIR', 'gbicc_'||to_char(sysdate,'YYYYMMDD')||'.log', 'W'); UTL_FILE.PUT_LINE(fileID,write_text||' log is ok!'); UTL_FILE.FCLOSE(fileID); END;


 

5、    oracle表导出到OS文件

 

(1)、简易代码 declare num number; j number := 0; sname varchar2(200); numfile UTL_FILE.FILE_TYPE; temp varchar2(1000); cursor curemp is select * from edw.edw_t01_repay_detail; begin numfile := utl_file.fopen('UTL_DIR', 'edw_t01_repay_detail.txt', 'w'); for i in curemp loop j := j + 1; temp := j || ':' || i.agmt_no || '|' || i.agmt_sub_no || '|' || i.repay_date || '|' || i.core_due_bill_no; utl_file.put_line(numfile, temp); --utl_file.new_line(numfile); end loop; utl_file.fclose(numfile); end; (2)、存储过程实现 CREATE OR REPLACE PROCEDURE write_data_to_file IS fileID UTL_FILE.FILE_TYPE; BEGIN fileID := UTL_FILE.FOPEN('UTL_DIR', 'agmt_bal.dat', 'W'); FOR agmt_bal IN (select * from jbk.edw_t01_agmt_bal_h) LOOP UTL_FILE.PUT_LINE(fileID,agmt_bal.agmt_no||'|'||agmt_bal.agmt_sub_no||'|'||agmt_bal.agmt_bal||'|'||to_char(agmt_bal.start_date,'YYYY-MM-DD')); END LOOP; UTL_FILE.FCLOSE(fileID); END;

 

6、    有较全信息的可外部调度的向OS中写日志的过程

create or replace procedure write_txtfile( -- 写一个字符串到指定文本文件中 path in varchar2, name in varchar2, pstr in varchar2 ) as l_output utl_file.file_type; str varchar2(1000); begin l_output:=utl_file.fopen(path,name,'a',2000); --每行最大字节数最多为32K bytes --l_output:=utl_file.fopen(path,name,'a'); -- 每行最大字节数最多为1023 bytes utl_file.put_line(l_output,pstr); utl_file.fclose(l_output); exception when utl_file.invalid_path then raise_application_error(-20001,'INVALID_PATH!'); when utl_file.invalid_mode then raise_application_error(-20002,'INVALID_MODE!'); when utl_file.invalid_filehandle then raise_application_error(-20003,'INVALID_FILEHANDLE!'); when utl_file.invalid_operation then raise_application_error(-20004,'INVALID_OPERATION!'); when utl_file.read_error then raise_application_error(-20005,'READ_ERROR!'); when utl_file.write_error then raise_application_error(-20006,'WRITE_ERROR!'); when utl_file.internal_error then raise_application_error(-20007,'INTERNAL_ERROR!'); when others then str:=sqlerrm(sqlcode); dbms_output.put_line(str); end;


 

 

 

 

 

 

分享到:
评论

相关推荐

    UTL_FILE操作文件代码

    UTL_FILE是Oracle提供的一个用于文件I/O操作的标准包。它允许用户在PL/SQL程序中读取、写入或删除文件系统中的文件。这个包对于那些需要与文件系统交互的应用来说非常有用。 ### 程序结构解析 该程序定义了一个名...

    在oracle9i中设置utl_file_dir参数.txt

    这个参数的设置对于实现数据的读写操作、日志记录以及与其他文件系统的交互至关重要。下面将详细探讨如何在Oracle 9i中正确设置`UTL_FILE_DIR`参数,以及这一参数的具体作用和应用场景。 ### 一、`UTL_FILE_DIR`...

    utl_file.txt

    尽管UTL_FILE的I/O能力类似于标准的操作系统流文件I/O(如OPEN、GET、PUT、CLOSE),但在服务器端实现时存在一些限制。 #### 安全性 UTL_FILE适用于客户端和服务器端的PL/SQL环境。客户端的实现遵循正常的操作系统...

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

    Oracle中的UTL_FILE包是一个非常实用的工具,它允许数据库用户在Oracle服务器上进行文件的读写操作。...理解并熟练使用UTL_FILE,能够极大地提升数据库管理的效率,尤其是在需要将数据库操作与文件系统交互的场景下。

    Oracle数据库通过UTL—FILE实现磁盘文件操作.pdf

    Oracle数据库的UTL_FILE包是一个内置的PL/SQL包,它允许数据库直接访问和操作服务器端的磁盘文件,从而实现数据库与文件系统的交互。这个包提供了一系列过程和函数,如`popen`、`flush`、`put`、`put_line`、`get_...

    Oracle数据库中业务数据文本导出.pdf

    在Oracle数据库系统中,UTL_FILE包是一个强大的工具,用于实现数据库内部与操作系统文件系统的交互,使得我们可以直接在数据库服务器端进行文件的读写操作。 UTL_FILE包的主要用途是导出数据到文本文件,这样就可以...

    oracle触发器实现二维码

    它使用UTL_FILE包与文件系统交互,生成二维码图片,然后读取该文件的内容并将其转换为BLOB,最后更新表中的二维码图像字段。 "loadjava"标签可能指的是使用Oracle的LOADJAVA工具来加载Java源代码或类文件到数据库,...

    plsql培训PPT

    通过本次PL/SQL培训,你将能够编写高效、健壮的PL/SQL代码,并利用UTL_FILE包实现与文件系统的交互。这将提升你在数据库管理和应用开发中的专业技能,为日常任务带来更大的便利。在实际工作中,不断实践和应用这些...

    oracle调用java包

    在Oracle数据库系统中,有时我们需要将Java代码集成到PL/SQL程序中,以便利用Java的强大功能,例如处理复杂的算法、大数据操作或者与外部系统交互。本文将详细介绍如何在Oracle中调用Java包,并探讨相关知识点。 一...

    Oracle存储过程读写文件[文].pdf

    这种功能主要依赖于Oracle提供的UTL_FILE包,这是一个标准的PL/SQL库,提供了一系列函数和过程,支持文件的I/O操作。 首先,要使用UTL_FILE包,需要在Oracle中创建一个目录对象(Directory object),这实际上是一...

    oracle自动导出csv

    Oracle提供了一个叫做`UTL_FILE`的内置包,可以用来与文件系统进行交互。一个简单的`export.sql`可能像这样: ```sql DECLARE file UTL_FILE.FILE_TYPE; BEGIN file := UTL_FILE.FOPEN('YOUR_DIR', 'data_all.csv...

    Plsql操作excel.docx

    在Oracle数据库中,PL/SQL是一种强大的编程语言,可以用来处理各种任务,包括与外部文件系统的交互,例如操作Excel文件。本篇主要介绍两种在PL/SQL中操作Excel文件的方法。 1. 使用UTL_FILE包: UTL_FILE是Oracle...

    Oracle P/L SQL实现FTP上传、下载功能(更新版)

    将FTP与P/L SQL结合,我们可以实现数据库与远程服务器之间的文件交互,例如上传和下载文件。 在Oracle P/L SQL中实现FTP功能,通常会利用内置的UTL_FTP包,这是一个实用工具包,提供了FTP服务所需的各种函数和过程...

    Oracle实现发送邮件

    此过程涉及Oracle数据库提供的多个包,如`UTL_SMTP`用于SMTP协议的交互、`UTL_FILE`用于文件读取等。 #### 核心知识点详解 ##### 存储过程定义 存储过程`PROCSENDEMAIL`被设计为接收多个参数,这些参数用于配置...

    oracle 调用webservice

    Oracle 调用 Webservice 实现详解 本文将详细介绍 Oracle 调用 Webservice 的实现过程,包括 Webservice 的基本概念、 Java 编写简单的 WebService 实例、Oracle 服务器端配置、加载 JAR 包、测试调用 ...

    批量导出ORACLE数据库BLOB字段生成文件

    Oracle客户端提供了SQL*Plus和其他工具,允许我们与远程Oracle服务器进行交互。安装完毕后,你需要配置TNS(Transparent Network Substrate)命名,这是Oracle数据库的网络服务配置文件,通常位于$ORACLE_HOME/...

    plsql.zip_plsql_sql_zip

    UTL_FILE是Oracle提供的一个实用程序包,用于在数据库和操作系统文件系统之间进行I/O操作。尽管UTL_FILE不直接支持ZIP格式,但可以借助外部程序(如Java或操作系统命令)来处理ZIP文件,然后在PL/SQL中调用这些程序...

    Oracle PLSQL 编程

    - **Web I/O**:利用UTL_HTTP包进行HTTP请求,实现与Web服务的交互。 #### 七、全球化和本地化 - **字符集支持**:讨论了如何处理不同字符集的问题,确保国际化应用的正确性。 - **日期时间格式化**:提供了日期和...

    Oracle中CLOB类型文字处理代码

    可能包括了JSP、Servlet或Java后端代码,演示如何在Web应用中与Oracle数据库中的CLOB字段交互,如通过JDBC连接进行CRUD操作。 8. 注意事项: - 管理CLOB数据时要考虑性能,大量读写可能影响效率。 - 避免一次性...

Global site tag (gtag.js) - Google Analytics