Oracle插入BLOB类型数据技术实战经验(oracle插入blob)
Oracle产品中包含了一种叫做Bolb的数据类型,用它来存储二进制的大文件。因此需要插入一个bolb类型的数据,必须先通过一系列的步骤完成。在本文中,使用Oracle 10g示例实战演示如何使用Blob类型来插入数据。
首先,创建一个test表,用来储存bolb类型的数据:
CREATE TABLE test (
filename VARCHAR2(100), filesize NUMERIC,
content blob, CONSTRAINT filenameUQ UNIQUE (filename)
);
其次,以bolb类型real/binary形式把待插入文件加载到指定test表中,命令如下:
LOAD_TO_BLOB(
v_dir IN VARCHAR2,--文件路径 v_name IN VARCHAR2, --文件名
t_lob OUT BLOB --字段) AS
v_bfile BFILE := BFILENAME(v_dir, v_name);--字段BEGIN
INSERT INTO test (filename,filesize,content) VALUES (v_name,DBMS_LOB.GETLENGTH(v_bfile),EMPTY_BLOB()) RETURNING content
INTO t_lob;-- 将待插入文档插入空的lob字段 DBMS_LOB.FILEOPEN(v_bfile); --打开待插入文件
DBMS_LOB.LOADFROMFILE(t_lob, v_bfile);--将文件写入lob字段 DBMS_LOB.FILECLOSE(v_bfile);--关闭文件
END;
最后,把待插入文件以input stream类型写入test表中,如下:
import java.io.InputStream;
import java.sql.Blob;import java.sql.Connection;
import java.sql.PreparedStatement;
InputStream inputstream = new FileInputStream("c:\\test.txt"))preparedStatement ps = connection.prepareStatement("INSERT INTO test (filename,filesize,content) VALUES (?, ?, ?)");
ps.setString(1, "test");long size = (long)inputstream.available();
ps.setLong(2, size);ps.setBinaryStream(3, inputstream, size);
ps.executeUpdate();// 提交事务
// 关闭资源
通过以上代码,基本完成了将bolb类型的数据插入Oracle数据库的步骤,以上是实践中的实战经验。
从上面的实战例子可以看出,插入bolb类型的数据并不复杂,只需要正确的使用JDBC和SQL语句就能完成。此外,包含bolb类型数据的表不仅只有文件及大小两个字段,还可以添加更多其他字段来表示文件的相关信息,比如文件创建、更新时间等,从而更好地控制文件的读取、写入等功能。