比如有张表结构如下:
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