`
forgetOneself
  • 浏览: 59425 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

oracle中设置UTL_FILE_DIR参数

阅读更多
第一步:以管理员用户登陆  
   如:conn    sys/password@sid    as    sysdba 

   第二步:设置可操作目录  
   需要指定utl_file包可以操作的目录。在oracle    10g以前,可以用以下方法:  
   1、alter    system    set    utl_file_dir='e:\utl'    scope=spfile;  
   2、在init.ora文件中,配置如下:  
   UTL_FILE=E:\utl或者UTL_FILE_DIR=E:\utl  
   在oracle    10g中建议用以下方法配置:CREATE    DIRECTORY    utl    AS   'E:\utl';  
   参见oracle    online:  
   In    the    past,    accessible    directories    for    the    UTL_FILE    functions     were    specified    in    the    initialization    file    using    the    UTL_FILE_DIR    parameter.    However,    UTL_FILE_DIR    access    is    not    recommended.    It    is    recommended    that    you    use    the    CREATE    DIRECTORY    feature,    which    replaces    UTL_FILE_DIR.    Directory    objects    offer    more    flexibility    and    granular    control    to    the    UTL_FILE    application    administrator,    can    be    maintained    dynamically    (that    is,    without    shutting    down    the    database),    and    are    consistent    with    other    Oracle    tools.    CREATE    DIRECTORY    privilege    is    granted    only    to    SYS    and    SYSTEM    by    default.  
   
   第三步:授权给指定用户,以便执行utl_file  
   GRANT    EXECUTE    ON    utl_file    TO    scott;  
   
   第四步:conn    scott/tiger  
   就可以正常使用utl_file了。    
   
   
   
   
   摘要:本文主要讨论如何利用Oracle的UTL_FILE包来实现对磁盘文件的I/O操作。  
   
     文件I/O对于数据库的开发来说显得很重要,比如如果数据库中的一部分数据来自于磁盘文件,  
           那么就需要使用I/O接口把数据导入到数据库中来。在    PL/SQL中没有直接的I/O接口,  
           一般在调试程序时可以使用Oracle自带的DBMS_OUTPUT包的put_line函数(即向屏幕进行I/O    操作)即可,  
         但是对于磁盘文件的I/O操作它就无能为力了。其实Oracle同样也提供了可以进行文件I/O的实用包-----UTL_FILE包,  
         利用这个实用包提供的函数来实现对磁盘的I/O操作。  
   
     1.    准备工作  
   
     由于Oracle数据库对包创建的目录有一个安全管理的问题,所以并不是所有的文件目录能够被UTL_FILE包所访问,  
           要更新这种目录设置,就得到init.ora里将UTL_FILE_DIR域设置为*,这样UTL_FILE包就可以对所有的目录文件进行访问了。  
   
     2.    文件I/O的实施  
   
     UTL_FILE包提供了很多实用的函数来进行I/O操作,主要有以下几个函数:  
   
     fopen  
   
     打开指定的目录路径的文件。  
   
     get_line  
   
     获取指定文件的一行的文本。  
   
     put_line  
   
     向指定的文件写入一行文本。  
   
     fclose  
   
     关闭指定的文件。  
   
     下面利用这些函数,实现从文件取数据,然后将数据写入到相应的数据库中。  
   
   create    or    replace    procedure    loadfiledata(p_path    varchar2,p_filename    varchar2)    as  
   v_filehandle    utl_file.file_type;    --定义一个文件句柄  
   v_text    varchar2(100);    --存放文本  
   v_name    test_loadfile.name%type;  
   v_addr_jd    test_loadfile.addr_jd%type;  
   v_region    test_loadfile.region%type;  
   v_firstlocation    number;  
   v_secondlocation    number;  
   v_totalinserted    number;  
   begin  
   if    (p_path    is    null    or    p_filename    is    null)    then  
   goto    to_end;  
   end    if;  
   v_totalinserted:=0;  
   /*open    specified    file*/  
   v_filehandle:=utl_file.fopen(p_path,p_filename,'r');  
   loop  
   begin  
   utl_file.get_line(v_filehandle,v_text);  
   exception  
   when    no_data_found    then  
   exit;  
   end     
   v_firstlocation:=instr(v_text,',',1,1);  
   v_secondlocation:=instr(v_text,',',1,2);  
   v_name:=substr(v_text,1,v_firstlocation-1);  
   v_addr_jd:=substr(v_text,v_firstlocation+1,v_secondlocation-v_firstlocation-1);  
   v_region:=substr(v_text,v_secondlocation+1);  
   /*插入数据库操作*/  
   insert    into    test_loadfile  
  values    (v_name,v_addr_jd,v_region);  
   commit;  
   end    loop;  
   <<to_end>>  
   null;  
   end    loadfiledata;  
   
   
   
   可以不用在init.ora中改的  
   只要用管理员的权限登陆,执行:  
   create    directory    UTL_FILE_TEST    as   '\*'    
   应该就可以了,不用新启动oracle的  
   不过其他用户要使用此目录要授权的  
   /  
   
   
   grant    create    any    directory    to    scott;  
     grant    create    any    library    to    scott;  
     create    or    replace    directory    utllobdir    as   'C:\ep';  
   
   
   在initsid.ora文件中,加入或修改  
       设置utl_file_dir的要点:  
     1。    utl_file_dir=*      这表示你能操作任何目录,尽量不要用  
     2。    utl_file_dir=d:\    这表示你能操作d:\目录下的文件,但你不能操作d:\目录下的子目录  
     3。注意在设置  
       utl_file_dir=路径时,如果路径是长路径名,例如c:\my    temp目录,则你必须加上'',例如:  
       utl_file_dir='c:\my    temp'  
     4。utl_file_dir可以是多个路径  
           utl_file_dir=c:\,d:\,d:\temp,'c:\my    temp'  
     5。设置完必须重新启动数据库 
分享到:
评论

相关推荐

    在oracle9i中设置utl_file_dir参数.txt

    4. **验证设置**:重启数据库后,可以使用以下SQL语句查询当前的`UTL_FILE_DIR`参数设置,以确认设置是否成功: ``` SELECT name, value FROM v$parameter WHERE name = 'utl_file_dir'; ``` ### 三、注意事项 ...

    oracle utl_file包的用法

    这可以通过在`init.ora`文件中设置`UTL_FILE_DIR`参数来实现,例如: ```sql UTL_FILE_DIR='E:/utl' ``` 或者在SQL*Plus中执行如下命令创建目录对象: ```sql CREATE DIRECTORY test_dir AS 'e:\temp'; GRANT ANY...

    UTL_FILE操作文件代码

    这里使用`fopen`函数以写入二进制模式(`wb`)打开文件,参数`FILEDIR`表示文件所在的目录。 #### 2. 从数据库读取BLOB数据 ```sql select ib into vb_loc from rt where rt.id = ii_filenum; ``` 这里从表`rt`中...

    ORACLE使用UTL_FILE记录日志简介

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

    utl_file.txt

    在过去,UTL_FILE函数的可访问目录是通过初始化文件中的`UTL_FILE_DIR`参数指定的,但这种方法不推荐使用,因为存在安全风险。现在建议使用`CREATE DIRECTORY`特性来替代`UTL_FILE_DIR`,这不仅提供了更多的灵活性和...

    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 ...

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

    在这个示例中,'DUMP_DIR'是UTL_FILE_DIR参数中定义的目录,'output.txt'是目标文件名,'W'表示写入模式,32767是缓冲区大小。 值得注意的是,由于UTL_FILE包直接操作文件,因此在处理大量数据时,可能需要考虑性能...

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

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

    oracle jobs 导出为执行脚本

    设置 file_dir file_name 参数  导出文件内容如最后附所视 &lt;br&gt; 局限性 要设置utl_file_dir(alter system set utl_file_dir=) ,file_dir要包括在  文件生成在服务端 &lt;br&gt; 其实可以封装成过程,...

    oracle向数据库里插入图片

    请注意,`YOUR_DIR`应替换为你的Oracle服务器上实际包含图片文件的目录,并确保`UTL_FILE`权限已经设置好。 查询图片数据时,我们可以使用`DBMS_LOB`包中的函数。以下是一个简单的查询示例,将BLOB数据转换为临时...

    orcle读取文件

    本文将详细介绍如何在Oracle数据库中创建目录以及如何利用`UTL_FILE`包来实现文件的读取与写入操作。 #### 二、创建目录(Create Directory) 在Oracle中,为了能够进行文件的读写操作,首先需要创建一个目录对象。...

    oracle调用java包

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

    oracle触发器实现二维码

    v_file := UTL_FILE.FOPEN('QR_DIR', 'temp_qrcode.png', 'wb', 32767); -- 假设这里调用了Java方法generateQRCodeImage并写入到v_file generateQRCodeImage(:NEW.code, v_file); -- code是待编码的数据 UTL_...

    oracle笔记二--plsql 编程.txt

    需要注意的是,在使用 `UTL_FILE` 进行文件操作之前,必须先配置 `UTL_FILE_DIR` 参数,以指定允许访问的目录路径。 以上就是从给定文件的信息中提取出的主要知识点。这些知识点涵盖了 Oracle 数据库中的一些常用...

    Oracle P/L SQL实现文件压缩、解压功能

    Oracle P/L SQL实现文件压缩、解压功能,以下是此过程包的头部,包体经常打包处理plb,感兴趣用户可以下载下来。 Create or Replace Package UTL_ZIP AUTHID CURRENT_USER as Type File_List is Table of Clob; -...

    oracle自动导出csv

    file := UTL_FILE.FOPEN('YOUR_DIR', 'data_all.csv', 'w', 32767); FOR rec IN (EXECUTE IMMEDIATE 'SELECT * FROM your_table') LOOP UTL_FILE.PUT_LINE(file, rec.column1 || ',' || rec.column2 || ',' || ...

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

    首先,要使用UTL_FILE包,需要在Oracle中创建一个目录对象(Directory object),这实际上是一个指向操作系统文件系统的物理路径的引用。例如,在SUSE系统上,可以在/home/zxin10/file目录下创建并授权,然后通过...

Global site tag (gtag.js) - Google Analytics