比如有张表结构如下:

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




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



容易吧!!嘻嘻

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: oracle