程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle讀寫文件bfilename的實例

Oracle讀寫文件bfilename的實例

編輯:Oracle數據庫基礎

Oracle讀寫文件操作相信大家都不陌生,下面就為您介紹Oracle讀寫文件bfilename的實例,希望對您學習Oracle讀寫文件方面能有所幫助。

Create directory讓我們可以在Oracle數據庫中靈活的對文件進行讀寫操作,極大的提高了Oracle的易用性和可擴展性。
其語法為:
CREATE [OR REPLACE] DIRECTORY directory AS 'pathname';

本案例具體創建如下:
create or replace directory exp_dir as '/tmp';
 
目錄創建以後,就可以把讀寫權限授予特定用戶,具體語法如下:
GRANT READ[,WRITE] ON DIRECTORY directory TO username;

例如:
grant read, write on directory exp_dir to eygle;
 
此時用戶eygle就擁有了對該目錄的讀寫權限。

讓我們看一個簡單的測試:

  1. SQL> create or replace directory UTL_FILE_DIR as '/opt/Oracle/utl_file';  
  2. Directory created.SQL> declare    
  3.     fhandle utl_file.file_type;    
  4.  begin    
  5.     fhandle :utl_file.fopen('UTL_FILE_DIR', 'example.txt', 'w');    
  6.     utl_file.put_line(fhandle , 'eygle test write one');    
  7.     utl_file.put_line(fhandle , 'eygle test write two');    
  8.     utl_file.fclose(fhandle);    
  9.  end;    
  10.  /  
  11. PL/SQL procedure successfully completed.  
  12. SQL> !  
  13. [oracle@jumper 9.2.0]$ more /opt/Oracle/utl_file/example.txt   
  14. eygle test write one  
  15. eygle test write two  
  16. [Oracle@jumper 9.2.0]$ 

類似的我們可以通過utl_file來讀取文件:

  1. 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.   /  
  14. eygle test write one  
  15. eygle test write two  
  16. PL/SQL procedure successfully completed. 

可以查詢dba_directorIEs查看所有directory.

  1. SQL> select * from dba_directorIEs;  
  2. OWNER                          DIRECTORY_NAME                 DIRECTORY_PATH------------------------------ ------------------------------ ------------------------------  
  3. SYS                            UTL_FILE_DIR                   /opt/Oracle/utl_file  
  4. SYS                            BDUMP_DIR                      /opt/Oracle/admin/conner/bdump  
  5. SYS                            EXP_DIR                        /opt/Oracle/utl_file 


可以使用drop directory刪除這些路徑.

  1. SQL> drop directory exp_dir;Directory droppedSQL> select * from dba_directorIEs;OWNER                          DIRECTORY_NAME                 DIRECTORY_PATH------------------------------ ------------------------------ ------------------------------SYS                            UTL_FILE_DIR                   /opt/oracle/utl_fileSYS                            BDUMP_DIR                      /opt/Oracle/admin/conner/bdump  
  2.    
  3. create or replace directory USER_DIR as 'E:\PLSQL\310\';  
  4.  
  5. DECLARE  
  6.    v_content VARCHAR2(1800);  
  7.    v_bfile BFILE;  
  8.    amount INT;  
  9.    offset INT :=1;  
  10.      
  11. BEGIN  
  12. v_bfile :bfilename('USER_DIR','test.TXT'); -- 注意這裡的 User_dir 對應上面已經創建好啦的目錄  
  13. amount :=DBMS_LOB.getlength(v_bfile);  
  14. DBMS_LOB.OPEN(v_bfile);  
  15. DBMS_LOB.READ(v_bfile,amount,offset,v_content);  
  16. DBMS_LOB.close(v_bfile);  
  17. DBMS_OUTPUT.PUT_LINE(v_content);  
  18. END;  
  19.    
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved