如何使用Oracle的BFILE8RB金州视窗!了解黔西南,从金州视窗开始!
1.创建相应的directory8RB金州视窗!了解黔西南,从金州视窗开始!
使用具有足够权限的用处创建directory,具体参考:Using Create directory & UTL_FILE in Oracle 8RB金州视窗!了解黔西南,从金州视窗开始!
create or replace directory BFILE_DIR as 8RB金州视窗!了解黔西南,从金州视窗开始!
''''/home/oracle/bfiletest''''; [oracle@ts01 bfiletest]$ sqlplus ''''/ as sysdba''''8RB金州视窗!了解黔西南,从金州视窗开始!
SQL*Plus: Release 9.2.0.6.0 - Production on Mon Jan 23 10:54:17 20068RB金州视窗!了解黔西南,从金州视窗开始!
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.8RB金州视窗!了解黔西南,从金州视窗开始!
8RB金州视窗!了解黔西南,从金州视窗开始!
Connected to:8RB金州视窗!了解黔西南,从金州视窗开始!
Oracle9i Enterprise Edition Release 9.2.0.6.0 - Production8RB金州视窗!了解黔西南,从金州视窗开始!
With the Partitioning, OLAP and Oracle Data Mining options8RB金州视窗!了解黔西南,从金州视窗开始!
JServer Release 9.2.0.6.0 - Production8RB金州视窗!了解黔西南,从金州视窗开始!
SQL> show parameter utl_file_dir ***************9.2开始,已经废弃了这个参数8RB金州视窗!了解黔西南,从金州视窗开始!
NAME TYPE VALUE8RB金州视窗!了解黔西南,从金州视窗开始!
------------------------------------ ----------- ------------------------------8RB金州视窗!了解黔西南,从金州视窗开始!
utl_file_dir string8RB金州视窗!了解黔西南,从金州视窗开始!
SQL> 8RB金州视窗!了解黔西南,从金州视窗开始!
SQL> create or replace directory BFILE_DIR as 8RB金州视窗!了解黔西南,从金州视窗开始!
2 ''''/home/oracle/bfiletest''''; 8RB金州视窗!了解黔西南,从金州视窗开始!
Directory created.8RB金州视窗!了解黔西南,从金州视窗开始!
Elapsed: 00:00:00.058RB金州视窗!了解黔西南,从金州视窗开始!
SQL>8RB金州视窗!了解黔西南,从金州视窗开始!
SQL> col DIRECTORY_PATH for a508RB金州视窗!了解黔西南,从金州视窗开始!
SQL> select * from dba_directories;8RB金州视窗!了解黔西南,从金州视窗开始!
OWNER DIRECTORY_NAME DIRECTORY_PATH8RB金州视窗!了解黔西南,从金州视窗开始!
------------------------------ ------------------------------ --------------------------------------------------8RB金州视窗!了解黔西南,从金州视窗开始!
SYS MEDIA_DIR /oracle/product/920/demo/schema/product_media/8RB金州视窗!了解黔西南,从金州视窗开始!
SYS LOG_FILE_DIR /oracle/admin/TSMISC02/create/8RB金州视窗!了解黔西南,从金州视窗开始!
SYS DATA_FILE_DIR /oracle/product/920/demo/schema/sales_history/8RB金州视窗!了解黔西南,从金州视窗开始!
SYS KU$_STYLESHEET_DIR /oracle/product/920/rdbms/xml/xsl8RB金州视窗!了解黔西南,从金州视窗开始!
SYS BFILE_DIR /home/oracle/bfiletest8RB金州视窗!了解黔西南,从金州视窗开始!
Elapsed: 00:00:00.018RB金州视窗!了解黔西南,从金州视窗开始!
SQL> 8RB金州视窗!了解黔西南,从金州视窗开始!
8RB金州视窗!了解黔西南,从金州视窗开始!
2.给相应的用户授权8RB金州视窗!了解黔西南,从金州视窗开始!
grant read on directory BFILE_DIR to lunar; 8RB金州视窗!了解黔西南,从金州视窗开始!
SQL> grant read on directory BFILE_DIR to lunar; 8RB金州视窗!了解黔西南,从金州视窗开始!
Grant succeeded.8RB金州视窗!了解黔西南,从金州视窗开始!
Elapsed: 00:00:00.048RB金州视窗!了解黔西南,从金州视窗开始!
SQL>8RB金州视窗!了解黔西南,从金州视窗开始!
8RB金州视窗!了解黔西南,从金州视窗开始!
3.检查相应的文件是否存在8RB金州视窗!了解黔西南,从金州视窗开始!
host ls -l /home/oracle/bfiletest/bfiletest_file.txt8RB金州视窗!了解黔西南,从金州视窗开始!
SQL> host ls -l /home/oracle/bfiletest/bfiletest_file.txt8RB金州视窗!了解黔西南,从金州视窗开始!
-rw-r--r-- 1 root root 349 Oct 31 2003 /home/oracle/bfiletest/bfiletest_file.txt8RB金州视窗!了解黔西南,从金州视窗开始!
SQL> 8RB金州视窗!了解黔西南,从金州视窗开始!
8RB金州视窗!了解黔西南,从金州视窗开始!
4.数据操作8RB金州视窗!了解黔西南,从金州视窗开始!
BFILENAME函数的语法如下:BFILENAME(''''directory'''',''''filename'''')8RB金州视窗!了解黔西南,从金州视窗开始!
该函数用以返回一个BFILE文件位置指针,指针和文件系统上的LOB binary文件相关联。8RB金州视窗!了解黔西南,从金州视窗开始!
''''directory'''' 是路径名,通过create directory方式创建。 ''''filename'''' 是文件系统上的文件名称8RB金州视窗!了解黔西南,从金州视窗开始!
在你在SQL,PL/SQL或者DBMS_LOG包,或者OCI中使用BFILENAME函数之前,你必须创建相应的directory并且关联相应的物理文件.8RB金州视窗!了解黔西南,从金州视窗开始!
以下是一个示例:8RB金州视窗!了解黔西南,从金州视窗开始!
CREATE DIRECTORY media_dir AS ''''/demo/schema/product_media'''';8RB金州视窗!了解黔西南,从金州视窗开始!
create table lunar_test (product_id number, ad_id number, ad_graphic bfile ); 8RB金州视窗!了解黔西南,从金州视窗开始!
INSERT INTO print_media (product_id, ad_id, ad_graphic)8RB金州视窗!了解黔西南,从金州视窗开始!
VALUES (3000, 31001, bfilename(''''MEDIA_DIR'''', ''''modem_comp_ad.gif''''));8RB金州视窗!了解黔西南,从金州视窗开始!
参考:Oracle9i SQL Reference Release (9.2) Part Number A96540-028RB金州视窗!了解黔西南,从金州视窗开始!
再例如:8RB金州视窗!了解黔西南,从金州视窗开始!
SQL> connect lunar/lunar8RB金州视窗!了解黔西南,从金州视窗开始!
create table lunar_test (id number, bfiles bfile ); 8RB金州视窗!了解黔西南,从金州视窗开始!
8RB金州视窗!了解黔西南,从金州视窗开始!
insert into lunar_test values ( 1, bfilename ( ''''BFILE_DIR'''', ''''bfiletest_file.txt'''' ) );8RB金州视窗!了解黔西南,从金州视窗开始!
8RB金州视窗!了解黔西南,从金州视窗开始!
SQL> connect lunar/lunar8RB金州视窗!了解黔西南,从金州视窗开始!
Connected.8RB金州视窗!了解黔西南,从金州视窗开始!
SQL> create table lunar_test (id number, bfiles bfile ); 8RB金州视窗!了解黔西南,从金州视窗开始!
8RB金州视窗!了解黔西南,从金州视窗开始!
Table created.8RB金州视窗!了解黔西南,从金州视窗开始!
8RB金州视窗!了解黔西南,从金州视窗开始!
Elapsed: 00:00:00.038RB金州视窗!了解黔西南,从金州视窗开始!
SQL> insert into lunar_test values ( 1, bfilename ( ''''BFILE_DIR'''', ''''bfiletest_file.txt'''' ) );8RB金州视窗!了解黔西南,从金州视窗开始!
8RB金州视窗!了解黔西南,从金州视窗开始!
1 row created.8RB金州视窗!了解黔西南,从金州视窗开始!
8RB金州视窗!了解黔西南,从金州视窗开始!
Elapsed: 00:00:00.008RB金州视窗!了解黔西南,从金州视窗开始!
SQL> commit;8RB金州视窗!了解黔西南,从金州视窗开始!
8RB金州视窗!了解黔西南,从金州视窗开始!
Commit complete.8RB金州视窗!了解黔西南,从金州视窗开始!
8RB金州视窗!了解黔西南,从金州视窗开始!
Elapsed: 00:00:00.008RB金州视窗!了解黔西南,从金州视窗开始!
SQL> 8RB金州视窗!了解黔西南,从金州视窗开始!
8RB金州视窗!了解黔西南,从金州视窗开始!
declare 8RB金州视窗!了解黔西南,从金州视窗开始!
fhandle utl_file.file_type; 8RB金州视窗!了解黔西南,从金州视窗开始!
begin 8RB金州视窗!了解黔西南,从金州视窗开始!
fhandle := utl_file.fopen(''''BFILE_DIR'''', ''''lunartest1.txt'''', ''''w''''); 8RB金州视窗!了解黔西南,从金州视窗开始!
utl_file.put_line(fhandle , ''''aaa''''); 8RB金州视窗!了解黔西南,从金州视窗开始!
utl_file.put_line(fhandle , ''''bbb''''); 8RB金州视窗!了解黔西南,从金州视窗开始!
utl_file.fclose(fhandle); 8RB金州视窗!了解黔西南,从金州视窗开始!
end; 8RB金州视窗!了解黔西南,从金州视窗开始!
/ 8RB金州视窗!了解黔西南,从金州视窗开始!
8RB金州视窗!了解黔西南,从金州视窗开始!
declare 8RB金州视窗!了解黔西南,从金州视窗开始!
fhandle utl_file.file_type; 8RB金州视窗!了解黔西南,从金州视窗开始!
fp_buffer varchar2(4000); 8RB金州视窗!了解黔西南,从金州视窗开始!
begin 8RB金州视窗!了解黔西南,从金州视窗开始!
fhandle := utl_file.fopen (''''BFILE_DIR'''',''''lunartest1.txt'''', ''''R''''); 8RB金州视窗!了解黔西南,从金州视窗开始!
8RB金州视窗!了解黔西南,从金州视窗开始!
utl_file.get_line (fhandle , fp_buffer ); 8RB金州视窗!了解黔西南,从金州视窗开始!
dbms_output.put_line(fp_buffer ); 8RB金州视窗!了解黔西南,从金州视窗开始!
utl_file.get_line (fhandle , fp_buffer ); 8RB金州视窗!了解黔西南,从金州视窗开始!
dbms_output.put_line(fp_buffer ); 8RB金州视窗!了解黔西南,从金州视窗开始!
utl_file.fclose(fhandle); 8RB金州视窗!了解黔西南,从金州视窗开始!
end; 8RB金州视窗!了解黔西南,从金州视窗开始!
/ 8RB金州视窗!了解黔西南,从金州视窗开始!