Oracle 如何将图片插入BLOB字段

  • Post author:
  • Post category:其他


开发要求把两张图片插入到表中,趁机学了下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


字段名


=empty_blob() where


ID=’xxxx’



return


字段名


into l_blob;



l_bfile:=bfilename(‘IMAGES’,’


xx.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;

/

其中IMAGES为数据库目录名(区分大小写)


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

--创建存储图片的表
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');

参考


Oracle中插入图片并显示(用BLOB类型) _SearchLife的专栏-CSDN博客


Oracle数据库中插入图片BLOB字段的方法_sunny05296的博客-CSDN博客_oracle 图片字段



版权声明:本文为Hehuyi_In原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。