日期:2014-05-17  浏览次数:21277 次

Oracle中数据类型BLOB是怎么插入数据的?
我想从一个文件里把要存的信息读出来 如test.txt(excel也可以)文件中的数据是
"<item1>test1</item1><item2>test2</item2>"

数据库里表对应该的该字段的数据类型是BLOB型,
如何如通INSERT 语句,把test.txt文件中的数据插曲入到表里.哪个高人告诉下小弟,最好有小段代码,谢谢.
如 INSERT newTab
  VALUES('','',''......)

------解决方案--------------------
BLOB对象存放的是指向文件的指针,我的思路是把指向test.txt的指针存到BLOB中,然后通过DBMS_LOB包的READ方法读取test.txt得内容,以下是示例代码:
--将图像文件“aki.bmp”写入到PHOTO列
declare
 lobloc blob;
 fileloc bfile;
 amount int;
 src_offset int:=1;
 dest_offset int:=1;
begin
 select photo into lobloc from lob_example2
 where id=&id for update;
 fileloc:=bfilename('f','&f');
 dbms_lob.fileopen(fileloc,0);
 amount:=dbms_lob.getlength(fileloc);
 dbms_lob.loadblobfromfile(lobloc,fileloc,amount,dest_offset,src_offset);
 dbms_lob.fileclose(fileloc);
 commit;
end;

--读取BLOB列数据(应使用RAW变量接收BLOB中存放的二进制数据)
declare
 lobloc BLOB;
 buffer raw(2000);
 amount int;
 offset int:=1;
begin
 select photo into lobloc from lob_example2
 where id=&id;
 amount:=dbms_lob.getlength(lobloc);
 dbms_lob.read(lobloc,amount,offset,buffer);
end;

本人也很菜,因为刚看到这个例子,就把它贴出来,希望能帮到楼主,给你启发。
------解决方案--------------------
我的印象中是转成二进制以后,然后用UPDATE更新流