zoukankan      html  css  js  c++  java
  • oracle中utl_file包读写文件操作实例学习

    在oracle中utl_file包提供了一些操作文本文件的函数和过程,学习了一下他的基本操作 
    1.创建directory,并给用户授权 
    
    复制代码 代码如下:
    
    
    --创建directory 
    create or replace directory TESTFILE as '/home/oracle/zxx/test'; 
    --给用户授权 
    grant read, write on directory TESTFILE to zxx; 
    
    
    详细介绍 
    http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14258/u_file.htm 
    2.写入操作 
    
    复制代码 代码如下:
    
    
    ---测试写入 
    DECLARE 
    filehandle utl_file.file_type; --句柄 
    begin 
    filehandle := utl_file.fopen('TESTFILE','hello.txt','w'); --打开文件 
    utl_file.put_line(filehandle,'Hello Oracle!');--写入一行记录 
    utl_file.put_line(filehandle,'Hello World!'); 
    utl_file.put_line(filehandle,'你好,胖子!'); 
    utl_file.fclose(filehandle);--关闭句柄 
    end; 
    
    
    备注: 
    fopen有一个参数max_linesize,下面是原文解释 
    Maximum number of characters for each line, including the newline character, for this file (minimum value 1, maximum value 32767). If unspecified, Oracle supplies a default value of 1024. 
    3.读取操作 
    
    复制代码 代码如下:
    
    
    --测试读取 
    set serveroutput on; 
    DECLARE 
    filehandle utl_file.file_type; 
    filebuffer varchar2(500); 
    begin 
    filehandle := utl_file.fopen('TESTFILE','hello.txt','R'); 
    IF utl_file.is_open(filehandle) THEN 
    dbms_output.put_line('file is open!'); 
    END IF; 
    loop 
    begin 
    utl_file.get_line(filehandle,filebuffer); 
    dbms_output.put_line(filebuffer); 
    EXCEPTION 
    WHEN no_data_found THEN 
    exit ; 
    WHEN OTHERS THEN 
    dbms_output.put_line('EXCEPTION1:'||SUBSTR(SQLERRM, 1, 100)) ; 
    end; 
    end loop; 
    utl_file.fclose(filehandle); 
    IF utl_file.is_open(filehandle) THEN 
    dbms_output.put_line('file is open!'); 
    else 
    dbms_output.put_line('file is close!'); 
    END IF; 
    utl_file.fcopy('TESTFILE', 'hello.txt', 'TESTFILE', 'hello.dat');--复制 
    utl_file.fcopy('TESTFILE', 'hello.txt', 'TESTFILE', 'hello2.dat'); 
    utl_file.fcopy('TESTFILE', 'hello.txt', 'TESTFILE', 'hello.xls'); 
    utl_file.frename('TESTFILE','hello.xls','TESTFILE','frenamehello.xls',TRUE);--重命名 
    utl_file.fremove('TESTFILE', 'hello2.dat');--删除文件 
    EXCEPTION 
    WHEN OTHERS THEN 
    dbms_output.put_line('EXCEPTION2:'||SUBSTR(SQLERRM, 1, 100)) ; 
    end; 
    
    
    4.判断文件是否存在(读,重命名,复制,删除都要判断文件是否存在) 
    
    复制代码 代码如下:
    
    
    --判断文件是否存在 
    DECLARE 
    ex BOOLEAN;--文件是否存在 
    flen NUMBER;--文件长度? 这个地方不知道怎么理 (原文 file_length The length of the file in bytes. NULL if file does not exist.) 
    bsize NUMBER;--文件大小 
    BEGIN 
    utl_file.fgetattr('TESTFILE', 'hello.txt', ex, flen, bsize); 
    IF ex THEN 
    dbms_output.put_line('File Exists'); 
    ELSE 
    dbms_output.put_line('File Does Not Exist'); 
    END IF; 
    dbms_output.put_line('File Length: ' || TO_CHAR(flen)); 
    dbms_output.put_line('Block Size: ' || TO_CHAR(bsize)); 
    END fgetattr; 
  • 相关阅读:
    计算机体系结构的铁律(iron law)
    PHP 画图——使用jpgraph画图
    理解Paxos Made Practical
    【bzoj1015】【JSOI2008】【星球大战】【并查集+离线】
    Spark调研笔记第3篇
    hduoj2094产生冠军
    使用HD/IDE层的ioctl接口获取磁盘容量get_hdd_max_sector
    给GridView设置行高
    tomcat的一些简单配置
    【JavaScript】--JavaScript总结一览无余
  • 原文地址:https://www.cnblogs.com/mengyuxin/p/5469620.html
Copyright © 2011-2022 走看看