在数据库的实际应用中,多多少少会遇到各种存储图片的需求,比如商品图片、用户头像及图片材料等。目前业界存储图片有两种做法:第一种是图片存储在磁盘上,数据库字段中保存的是图片的路径。第二种是把图片直接以二进制形式存储在数据库中;一般数据库提供一个二进制字段来存储二进制数据。
1、创建测试的表
CREATE TABLE TEST_LOB ( T_ID INT NOT NULL, T_IMAGE BLOB NOT NULL, PRIMARY KEY(T_ID) ); |
2、命令行的方式
2.1、插入图片
2.2、验证结果
3.1、插入图片
创建图片存放目录,并将需要插入到表里的图片放入该目录里,此处创建的IMAGES目录是虚拟路径,而不是物理路径;创建创建存储过程,FILENAME为图片的名字:
---创建目录 CREATE DIRECTORY "IMAGES" as '/home/dmdba'; --存储过程 CREATE OR REPLACE PROCEDURE IMG_INSERT ( TID INT, FILENAME VARCHAR (200) ) AS F_LOB BFILE; B_LOB BLOB; BEGIN INSERT INTO TEST_LOB(T_ID,T_IMAGE) VALUES (TID,EMPTY_BLOB()) RETURN T_IMAGE 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)); DBMS_LOB.FILECLOSE(F_LOB); COMMIT ; END; --调用插入 CALL IMG_INSERT(2,'TEST.png'); |
3.2、验证结果