如何将Oracle blob Field导出到磁盘上的文件 [英] How I Can Export Oracle blob Field to a file on disk

查看:560
本文介绍了如何将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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆