如何将Oracle blob Field导出到磁盘上的文件 [英] How I Can Export Oracle blob Field to a file on disk
本文介绍了如何将Oracle blob Field导出到磁盘上的文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个带有表的oracle数据库有一个blob字段有图像存储在其中
如何将存储在blob字段中的这些图像导出回文件在计算机硬盘上的一个文件夹中
我有oracle 11g和pl / sql developr 8.0和visual basic 2013
解决方案
您可以使用UTL_FILE实用程序进行文件操作。
遍历包含blob字段的表,并根据需要使用UTL_FILE实用程序创建文件。 />
http:// docs.oracle.com/cd/B19306_01/appdev.102/b14258/u_file.htm#BABDEJDH [ ^ ]
你能否告诉我如何使用我的工作utl_file
谢谢你我管理过要做到最后
这是我的程序,如果有更好的方式,请建议
< pre lang =SQL> CREATE 或 REPLACE PROCEDURE SAVE_FINGERS(
p_directory IN VARCHAR2
)
IS
v_blob BLOB;
v_start NUMBER:= 1 ;
v_bytelen NUMBER:= 2000 ;
v_len NUMBER;
v_raw RAW( 2000 );
v_x NUMBER;
v_output UTL_FILE.file_type;
v_file_name VARCHAR2( 200 );
BEGIN
FOR i IN ( SELECT DBMS_LOB.getlength(FINGERPRINT)v_len,CARD_NUMBER v_file_name,
FINGERPRINT v_blob
FROM RECEPT_CARDS)
LOOP
v_output:= UTL_FILE.fopen(p_directory,i.v_file_name || ' 。JPG',' wb', 32760 );
v_x:= i.v_len;
v_start:= 1 ;
v_bytelen:= 2000 ;
WHILE v_start< i.v_len AND v_bytelen> 0
LOOP
DBMS_LOB。 READ (i.v_blob,v_bytelen,v_start, v_raw);
UTL_FILE.put_raw(v_output,v_raw);
UTL_FILE.fflush(v_output);
v_start:= v_start + v_bytelen;
v_x:= v_x - v_bytelen;
IF v_x< 2000
那么
v_bytelen:= v_x;
END IF ;
END LOOP;
UTL_FILE.fclose(v_output);
END LOOP;
END SAVE_FINGERS;
I Have an oracle database with a table have a blob field have images store in it
how I can export these images stored in blob field back to a file in a folder on the computers harddisk
I have oracle 11g and pl/sql developr 8.0 and visual basic 2013
解决方案
You could use UTL_FILE utility for file operation.
Loop through the table containing the blob field and create file as you wish using the UTL_FILE utility.
http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/u_file.htm#BABDEJDH[^]
could you please give me practical example how I can do my job using utl_file
THANK YOU I'VE MANAGED TO DO IT AT LAST
HERE IS MY PROCEDURE PLEASE ADVISE IF THERE IS A BETTER WAY
CREATE OR REPLACE PROCEDURE SAVE_FINGERS ( p_directory IN VARCHAR2 ) IS v_blob BLOB; v_start NUMBER := 1; v_bytelen NUMBER := 2000; v_len NUMBER; v_raw RAW (2000); v_x NUMBER; v_output UTL_FILE.file_type; v_file_name VARCHAR2 (200); BEGIN FOR i IN (SELECT DBMS_LOB.getlength (FINGERPRINT) v_len, CARD_NUMBER v_file_name, FINGERPRINT v_blob FROM RECEPT_CARDS) LOOP v_output := UTL_FILE.fopen (p_directory, i.v_file_name || '.JPG', 'wb', 32760); v_x := i.v_len; v_start := 1; v_bytelen := 2000; WHILE v_start < i.v_len AND v_bytelen > 0 LOOP DBMS_LOB.READ (i.v_blob, v_bytelen, v_start, v_raw); UTL_FILE.put_raw (v_output, v_raw); UTL_FILE.fflush (v_output); v_start := v_start + v_bytelen; v_x := v_x - v_bytelen; IF v_x < 2000 THEN v_bytelen := v_x; END IF; END LOOP; UTL_FILE.fclose (v_output); END LOOP; END SAVE_FINGERS;
这篇关于如何将Oracle blob Field导出到磁盘上的文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文