服务器 频道

用Create directory-对文件灵活读写

  【IT168 服务器学院】 Create directory让我们可以在Oracle数据库中灵活的对文件进行读写操作,极大的提高了Oracle的易用性和可扩展性。
  
  其语法为:
  
  create or replace directory exp_dir as ''/tmp'';
  
  目录创建以后,就可以把读写权限授予特定用户,例如:
  
  grant read, write on directory exp_dir to eygle;
  
  此时用户eygle就拥有了对该目录的读写权限。
  
  让我们看一个简单的测试:
  
  SQL> create or replace directory UTL_FILE_DIR as ''/opt/oracle/utl_file'';
  
  Directory created.
  
  SQL> declare
   2  fhandle utl_file.file_type;
   3 begin
   4  fhandle := utl_file.fopen(''UTL_FILE_DIR'', ''example.txt'', ''w'');
   5  utl_file.put_line(fhandle , ''eygle test write one'');
   6  utl_file.put_line(fhandle , ''eygle test write two'');
   7  utl_file.fclose(fhandle);
   8 end;
   9 /
  
  PL/SQL procedure successfully completed.
  
  SQL> !
  [oracle@jumper 9.2.0]$ more /opt/oracle/utl_file/example.txt
  eygle test write one
  eygle test write two
  [oracle@jumper 9.2.0]$
  
  类似的我们可以通过utl_file来读取文件:
  
  SQL> declare
   2  fhandle  utl_file.file_type;
   3  fp_buffer varchar2(4000);
   4 begin
   5  fhandle := utl_file.fopen (''UTL_FILE_DIR'',''example.txt'', ''R'');
   6
   7  utl_file.get_line (fhandle , fp_buffer );
   8  dbms_output.put_line(fp_buffer );
   9  utl_file.get_line (fhandle , fp_buffer );
   10  dbms_output.put_line(fp_buffer );
   11  utl_file.fclose(fhandle);
   12 end;
   13 /
  eygle test write one
  eygle test write two
  
  PL/SQL procedure successfully completed.
  
  可以查询dba_directories查看所有directory.
  
  SQL> select * from dba_directories;
  
  OWNER             DIRECTORY_NAME         DIRECTORY_PATH
  ------------------------------ ------------------------------ ------------------------------
  SYS              UTL_FILE_DIR          /opt/oracle/utl_file
  SYS              BDUMP_DIR           /opt/oracle/admin/conner/bdump
  SYS              EXP_DIR            /opt/oracle/utl_file
  
  可以使用drop directory删除这些路径.
  
  SQL> drop directory exp_dir;
  
  Directory dropped
  
  SQL> select * from dba_directories;
  
  OWNER             DIRECTORY_NAME         DIRECTORY_PATH
  ------------------------------ ------------------------------ ------------------------------
  SYS              UTL_FILE_DIR          /opt/oracle/utl_file
  SYS              BDUMP_DIR           /opt/oracle/admin/conner/bdump
0
相关文章