utl_file_dir paramete为null。无法使用utl_file

时间:2017-11-17 18:01:29

标签: oracle

我想使用utl_file包来读取文件并将它们上传到db。

       declare
           l_fhandle utl_file.file_type;
           l_clob    CLOB;
           l_buffer  VARCHAR2(4096);
     BEGIN
     l_fhandle := utl_file.fopen('admin',
                          'FILE.TXT',
                          'R');
     dbms_lob.createtemporary(l_clob, TRUE, DBMS_LOB.CALL);
     LOOP
     BEGIN
      utl_file.get_line(L_FHANDLE, l_buffer);
      dbms_output.put_line(l_buffer);
      dbms_lob.writeappend(l_clob, length(l_buffer), l_buffer);

      EXCEPTION
      WHEN no_data_found THEN
    INSERT INTO interfacetable
      (FILENAME, content)
    VALUES
      ('FILE', l_clob);
    EXIT;

        END;
     END LOOP;
   END;
  /

使用sql创建目录

create or replace directory admin as 'D:\temp';

但是在运行程序时遇到错误

  

声明   *第1行的错误:ORA-29280:无效的目录路径ORA-06512:在“SYS.UTL_FILE”,第41行ORA-06512:在“SYS.UTL_FILE”,第478行   ORA-06512:第6行

请帮忙

1 个答案:

答案 0 :(得分:0)

您可能有两个案例:

  • 尝试使用大写字母作为目录名称
  

即。而不是admin使用ADMIN

  • 确保操作系统级用户有权写入文件夹
 create or replace directory ADMIN as 'D:\temp';   /   
 grant read, write on directory ADMIN to {user | role | PUBLIC};   /