设置UTL_FILE_DIR参数
2008年03月13日 星期四 16:31

第一步:以管理员用户登陆   
   如: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。设置完必须重新启动数据库

转载于:https://blog.51cto.com/aixuexi/780785

设置UTL_FILE_DIR参数 使得数据库使用OS文件相关推荐

  1. oracle utl file grant,oracle中设置UTL_FILE_DIR参数

    oracle中设置UTL_FILE_DIR参数 第一步:以管理员用户登陆 如:conn    sys/password@sid    as    sysdba 第二步:设置可操作目录 需要指定utl_ ...

  2. Durid数据库连接池设置ConnectionInitSqls参数解决数据库设置编码utf8mb4

    背景:数据库在存储特殊字符时,数据库编码必须使用utf8mb4,否则会报Incorrect string value: '\xF0\x9F\x98\x82\xF0\x9F-' for column ' ...

  3. oracle dg 备库未设置convert参数导致ORA-01111,ORA-01110

    2019独角兽企业重金招聘Python工程师标准>>> 查看trace 文件: MRP0: Background Managed Standby Recovery process s ...

  4. RMAN实战1:RMAN备份数据库、控制文件、参数文件、FRA、归档日志

    前面结束了写RMAN的基础设置,下面的几篇文章进入实战阶段.本篇介绍了用RMAN如何备份ORACLE的除了安装文件之外的各种文件,如数据库.表空间.数据文件.归档重做日志等. RMAN备份前的准备工作 ...

  5. pandas使用read_csv读取文件数据、设置converters参数将百分比字符串转换为数字

    pandas使用read_csv读取文件数据.设置converters参数将百分比字符串转换为数字 目录 pandas使用read_csv读取文件数据.设置converters参数将百分比字符串转换为 ...

  6. pandas使用read_csv函数读取文件的前N行数据并保留表头、pandas使用read_csv函数读取制表符分割的文件(tab-delimited)、自定义设置sep参数

    pandas使用read_csv函数读取文件的前N行数据并保留表头.pandas使用read_csv函数读取制表符分割的文件(tab-delimited).自定义设置sep参数 目录

  7. 方舟服务器参数文件,《方舟生存进化》参数文件ini设置教程 参数文件ini怎么设置...

    <方舟生存进化>很多玩家在服务器的ini设置各种参数,这也就类似于私服,有些玩家不喜欢多人联机喜欢一个人玩,但是难度过大,那么也需要修改一些参数,下面小编就为大家带来方舟生存进化参数文件i ...

  8. JDK1.7下载httpsw文件报错 Received fatal alert: protocol_version 设置VM参数 -Dhttps.protocols=TLSv1.2

    设置VM参数 -Dhttps.protocols=TLSv1.2 参考: IDEA出现问题:Received fatal alert: protocol_version 解决方案_ayang1986的 ...

  9. oracle dmp 导入 mysql_oracle新数据库导入dmp文件

    Oracle数据导入导出imp/exp命令 10g以上expdp/impdp命令 Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令可以把数据从远程数据库服务器导出到 ...

最新文章

  1. 你不知道的windows7 技巧大全【3】
  2. 数据中心虚拟化的8大好处
  3. qt ui界面加入qsplitter_UI 文件设计与运行机制
  4. C# 系统应用之透明罩MyOpaqueLayer实现360界面阴影效果
  5. JSTL EL对Map集合的支持
  6. @Transactional 使用
  7. 隐藏响应的server,X-Powered-By
  8. 低代码平台会成为企业数字化基础设施么?
  9. Resharper F12下载dll源码
  10. 11月22日云栖精选夜读 | 送你一份Spring Boot 知识清单
  11. python3.3.2_Python代码2转3、3转2的方法
  12. 2017.4.14上午
  13. Matlab R2020b安装
  14. sw修改器初始化服务器错误,solidworks打开出现Loadlibrary failed with error 1114:动态链接库(DLL)初始化例程失败如何解决?...
  15. 数据挖掘导论 笔记3
  16. linux xshell 如何使用教程,Xshell入门教程
  17. 浅谈IEEE会议论文的不出席政策Non-Presented Paper(No-Show)Policy
  18. 【vue】微信sdk中接口和标签本地调试
  19. Photoshop学习(十三):利用图层制作凹陷效果
  20. 计算机音乐野狼,野狼disco(hook部分)单轨调教用

热门文章

  1. Python中字符串的截取,列表的截取
  2. python-adb
  3. 深度解析 H.265 视频解决方案
  4. (转)解决Android SDK Manager无法更新或下载太慢问题
  5. Android 7.0解决抓取不到https请求的问题
  6. 解决Jsp运行org.apache.jasper.JasperException: Unable to compile class for JSP:问题
  7. java异常处理机制详解
  8. kafka集群中常见错误的解决方法:kafka.common.KafkaException: Should not set log end offset on partition
  9. mysql group by 报错 ,only_full_group_by 三种解决方案
  10. 关于共享单车的供电问题如何解决?