ORACLE 将BLOB类型转成SQL语句插入

比如有张表结构如下:

create table TestBlob
(
  blb BLOB
)

首先考虑到 如何将表中的BLOB类型转成字符串,我们可以通过创建一个方法:


Create Or Replace Function BlobToVarchar (Blob_In In Blob) Return Varchar2
Is
    V_Varchar Varchar2(4000);
    V_Start Pls_Integer := 1;
    V_Buffer Pls_Integer := 4000;
Begin

    If Dbms_Lob.Getlength(Blob_In) Is Null Then
        Return '';
    End If;

    For I In 1..Ceil(Dbms_Lob.Getlength(Blob_In) / V_Buffer) Loop
        --当转换出来的字符串乱码时,可尝试用注释掉的函数

        --V_Varchar := Utl_Raw.Cast_To_Varchar2(Utl_Raw.Convert(Dbms_Lob.Substr(Blob_In, V_Buffer, V_Start),'SIMPLIFIED CHINESE_CHINA.ZHS16GBK', 'AMERICAN_THE NETHERLANDS.UTF8'));
        V_Varchar := Utl_Raw.Cast_To_Varchar2(Dbms_Lob.Substr(Blob_In, V_Buffer, V_Start));
        V_Start := V_Start + V_Buffer;
    End Loop;

    Return V_Varchar;

End BlobToVarchar;


其次呢,如何将字符串转成BLOB类型呢,ORACLE中有提供rawtohex方法,如:

INSERT INTO TestBlob VALUES(RAWTOHEX('测试测试测试')); --即可将字符串类型的数据插入到BLOB类型的表中。



那么现在大家应该知道怎么将某个表中的BLOB类型导成SQL语句了吧。。 举个例子,把TestBlob表通过一条语句导出成SQL语句。



select 'INSERT INTO TestBlob (rawtohex(replace('''||replace(Blob_To_Varchar(blb),'''','"')||''',''"'','''''''')));'   from TestBlob



然后将结果集的数据拷贝出来即可。



容易吧!!嘻嘻

=============================================
http://hi.baidu.com/blake421/item/ee619f33ffdb0886c3cf2910

猜你喜欢

转载自thomas0988.iteye.com/blog/2062202