如何给oracle导入blob和clob字段
展开全部
例:假设给oracle数据库导入blob类型的图片,图片放在目录G:\images下。
1.先创建一个目录directory,命名为IMAGES;
CREATE OR REPLACE DIRE,TORY
IMAGES AS 'G:\test';或者直接在PlSql Directories目录下新建目录;
2.创建一个存储过程,批量导入blob
create or replace procedure img_insert asbeginDECLARE
f_lob bfile;--文件类型b_lobblob;
--用来存储图片的名称filenamevarchar2(400);begin
--循环的初始值for i in 1
.. 100 loop
--找出每一列的文件名,因为文件名和图片名称是一样的
select t.flnm into filename from ZS_GC_SNIMDT t where t.id =i;
--查找到之后,执行update操作,插入空的blob (注意IMAGES一定要大写)
update ZS_GC_SNIMDT set brfl = empty_blob()whereid = i return brfl into b_lob;
--获取指定目录下的文件
f_lob := bfilename('IMAGES', filename);
-- 以只读的方式打开文件
dbms_lob.fileopen(f_lob, dbms_lob.file_readonly);--传递对象
dbms_lob.loadfromfile(b_lob, f_lob,
dbms_lob.getlength(f_lob));
--关闭原始文件
1.先创建一个目录directory,命名为IMAGES;
CREATE OR REPLACE DIRE,TORY
IMAGES AS 'G:\test';或者直接在PlSql Directories目录下新建目录;
2.创建一个存储过程,批量导入blob
create or replace procedure img_insert asbeginDECLARE
f_lob bfile;--文件类型b_lobblob;
--用来存储图片的名称filenamevarchar2(400);begin
--循环的初始值for i in 1
.. 100 loop
--找出每一列的文件名,因为文件名和图片名称是一样的
select t.flnm into filename from ZS_GC_SNIMDT t where t.id =i;
--查找到之后,执行update操作,插入空的blob (注意IMAGES一定要大写)
update ZS_GC_SNIMDT set brfl = empty_blob()whereid = i return brfl into b_lob;
--获取指定目录下的文件
f_lob := bfilename('IMAGES', filename);
-- 以只读的方式打开文件
dbms_lob.fileopen(f_lob, dbms_lob.file_readonly);--传递对象
dbms_lob.loadfromfile(b_lob, f_lob,
dbms_lob.getlength(f_lob));
--关闭原始文件
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询