经过数个不眠之夜,终于得出BLOB保存至磁盘文件的方法,以下代码经过测试成功。请大家见教!
注意:各阶段使用的数据库用户名不一定相同。
--==============================
--创建JAVA程序源
--==============================
CREATE OR REPLACE JAVA SOURCE NAMED "BlobHandler" AS
import java.lang.*;
import java.sql.*;
import oracle.sql.*;
import java.io.*;
public class BlobHandler
{
public static void ExportBlob(String myFile, BLOB myBlob) throws Exception
{
// Bind the image object to the database object
// Open streams for the output file and the blob
File binaryFile = new File(myFile);
FileOutputStream outStream = new FileOutputStream(binaryFile);
InputStream inStream = myBlob.getBinaryStream();
// Get the optimum buffer size and use this to create the read/write buffer
int size = myBlob.getBufferSize();
byte[] buffer = new byte[size];
int length = -1;
// Transfer the data
while ((length = inStream.read(buffer)) != -1)
{
outStream.write(buffer, 0, length);
outStream.flush();
}
// Close everything down
inStream.close();
outStream.close();
}
};
/
ALTER java source "BlobHandler" compile;
show errors java source "BlobHandler"
--=======================================
--创建BLOB保存为文件的存储过程
--=======================================
CREATE OR REPLACE PROCEDURE ExportBlob (p_file IN VARCHAR2,
p_blob IN BLOB)
AS LANGUAGE JAVA
NAME 'BlobHandler.ExportBlob(java.lang.String, oracle.sql.BLOB)';
/
-==-======================================================
--授权数据库用户可以保存文件至磁盘,应以DBA身份登录
--注:SCHEMA-NAME应填写数据库用户名,应注意大写字母
--========================================================
EXEC Dbms_Java.Grant_Permission( -
'SCHEMA-NAME', -
'java.io.FilePermission', -
'<<ALL FILES>>', -
'read ,write, execute, delete');
--=======================================
--测试
--=======================================
--创建数据库(测试)
CREATE TABLE tab1 (col1 BLOB);
INSERT INTO tab1 VALUES(empty_blob());
COMMIT;
--执行存储过程,生成磁盘文件
DECLARE
v_blob BLOB;
BEGIN
SELECT col1
INTO v_blob
FROM tab1;
ExportBlob('c:\MyBlob',v_blob);
END;
/彻底实现BLOB字段保存到磁盘文件的方法,内有实例
最新推荐文章于 2021-04-05 19:10:44 发布
本文详细介绍了使用Java程序将数据库中的BLOB类型数据导出至磁盘文件的过程,包括创建JAVA程序源、存储过程及权限授权等步骤,并通过测试验证了方法的有效性。

1760

被折叠的 条评论
为什么被折叠?



