Oracle数据库中插入图片BLOB字段的方法

开发要求把两张图片插入到表中,趁机学了下oracle把图片插入blob字段的方法

 

1. 在操作系统创建一个oracle用户可以访问的目录

mkdir -p /home/oracle/picture

 

2. 把图片上传到该目录并允许oracle用户访问

 

3. 在数据库中创建目录

create or replace directory images as '/home/oracle/picture/';

 

4. 执行以下语句对已有数据进行更新

declare

 l_bfile bfile;

 l_blob blob;

begin

 update test_picture set byte_icon=empty_blob() where ID='xxxx'

 return byte_icon into l_blob;

 l_bfile:=bfilename('IMAGES','banner.jpg');

 dbms_lob.open(l_bfile,dbms_lob.file_readonly);

 dbms_lob.loadfromfile(l_blob,l_bfile,dbms_lob.getlength(l_bfile));

 dbms_lob.close(l_bfile);

 commit;

end;

/

 

其中byte_icon为待更新字段,IMAGES为数据库目录名(区分大小写),banner.jpg为图片名

 

也可以利用存储过程进行插入

--创建存储图片的表
CREATE TABLE IMAGE_LOB (T_ID VARCHAR2 (5) NOT NULL,T_IMAGE BLOB NOT NULL);
--创建存储图片的目录
CREATE OR REPLACE DIRECTORY IMAGES AS 'C:/picture';
--在c:下自己建一个叫picture的文件夹
CREATE OR REPLACE PROCEDURE IMG_INSERT (TID VARCHAR2,FILENAME VARCHAR2) AS
F_LOB BFILE;--文件类型
B_LOB BLOB;
BEGIN
iNSERT INTO IMAGE_LOB (T_ID, T_IMAGE)
VALUES (TID,EMPTY_BLOB ()) RETURN T_IMAGE INTO B_LOB;
--插入空的blob
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));
--传递对象
DBMS_LOB.FILECLOSE (F_LOB);
--关闭原始文件
COMMIT;
END;
/
--在C:/picture下放一张图片1.gif
--将该图片存入表
exec IMG_INSERT('1','1.gif');

 

参考

https://blog.csdn.net/SearchLife/article/details/3520192

https://blog.csdn.net/sunny05296/article/details/75039980

猜你喜欢

转载自blog.csdn.net/Hehuyi_In/article/details/89458472
今日推荐