import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Blob;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import oracle.sql.BLOB;
public class OracleBlob {
private DBstep.iDBManager2000 DbaObj ;
private File file = null;
public OracleBlob() {
DbaObj=new DBstep.iDBManager2000(); //创建数据库对象
}
public void insert(String infile) throws Exception {
FileInputStream fis = null;
int iFileId = -1;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
//生成随机码
java.util.Date dt=new java.util.Date();
long lg=dt.getTime();
Long ld=new Long(lg);
String mRecordID=ld.toString();
file = new File(infile);
fis = new FileInputStream(file);
//得到数据库
iFileId = DbaObj.GetMaxID("INFO_DOCUMENT_FILE","FileId");
if (DbaObj.OpenConnection()) {
DbaObj.Conn.setAutoCommit(false);
String sql="insert into INFO_DOCUMENT_FILE(FileID,RecordID,FileName,FileType,FileSize,FileDate,FileBody,FilePath,UserName,Descript) values (?,?,?,?,?,?,empty_blob(),?,?,? )";
pstmt = DbaObj.Conn.prepareStatement(sql);
pstmt.setInt(1, iFileId);
pstmt.setString(2, mRecordID);
pstmt.setString(3, mRecordID+".doc");
pstmt.setString(4, "doc");
pstmt.setLong(5,file.length());
pstmt.setDate(6, DbaObj.GetDate());
pstmt.setString(7, "");
pstmt.setString(8, "");
pstmt.setString(9, "测试通用版本=="); // "通用版本"
pstmt.executeUpdate();
pstmt = DbaObj.Conn.prepareStatement("select FileBody,FileSize from INFO_DOCUMENT_FILE where RecordID='"+mRecordID+"' for update");
rs = pstmt.executeQuery();
while (rs.next()) {
oracle.sql.BLOB blob = (oracle.sql.BLOB)rs.getBlob("FileBody");
OutputStream os = blob.getBinaryOutputStream();
BufferedInputStream bis = new BufferedInputStream(fis);
byte[] buf = new byte[rs.getInt("FileSize")];
int len = 0;
if ((len = bis.read(buf)) != -1) {
os.write(buf, 0, len);
os.flush();
}
os.close();
bis.close();
}
DbaObj.Conn.commit();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
fis.close();
DbaObj.CloseConnection();
}
}
public void readDoc(String outfile,String id)throws Exception{
FileOutputStream fos = null;
InputStream is = null;
String Sql = "SELECT FileBody,FileSize FROM info_document_file WHERE RecordID='" + id + "'";
try {
if (DbaObj.OpenConnection()) {
try {
ResultSet result = DbaObj.ExecuteQuery(Sql);
if (result.next()) {
try {
int fileSize=result.getInt("FileSize");
Blob blob=result.getBlob("FileBody");
file = new File(outfile);
if(!file.exists())
{
file.createNewFile();//如果文件不存在,则创建
}
fos = new FileOutputStream(file);
is = blob.getBinaryStream();// 读出数据后转换为二进制流
byte[] data = new byte[fileSize];
int size = 0;
while((size = is.read(data)) != -1)
{
fos.write(data,0,size);
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
result.close();
}
catch (SQLException e)
{
e.printStackTrace();
}
}
}
finally
{
DbaObj.CloseConnection();
}
}
public static void main(String args[])
{
OracleBlob blob=new OracleBlob();
try {
blob.readDoc("c://test.doc", "1281088075378");
//blob.insert("c://信息处WebService接口文档.doc");
} catch (Exception e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
批量导出oracle bolb图片到本地文件
批量导出Oracle数据库中的BLOB字段生成图片,是一项常见的需求,尤其对于那些需要将数据库中的图片资源导出到本地文件系统的情况。下面将详细介绍这一过程及其相关知识点。 首先,我们需要理解BLOB类型。BLOB...
Oracle数据库在处理大对象(LOB)类型,如Clob(Character Large Object)和Blob(Binary Large Object)时,有时需要专门的工具来进行高效且安全的数据导出。这些字段通常存储大量的文本或二进制数据,比如长篇文档...
本教程将详细讲解如何批量导出Oracle数据库中的BLOB字段并生成文件,适用于需要定期或一次性处理大量图片或其他BLOB数据的场景。 首先,确保你已经在本地安装了Oracle客户端。Oracle客户端提供了SQL*Plus和其他工具...
使用PL/SQL脚本将Oracle的Blob字段中存储的图片批量导出到文件夹,可在文件夹中直接查看。
Oracle数据库在存储大对象(BLOB和CLOB)时提供了强大的功能,但处理这些类型的数据进行导入导出可能会带来挑战。"Oracle导出Clob,Blob工具版本2" 是一个专为解决这个问题而设计的应用程序,它改进了对CLOB...
总结来说,从Oracle的BLOB类型字段中提取并转换到MySQL的过程涉及到查询、导出、上传等多个步骤。在实际操作中,需要对数据库API有深入理解,并注意数据的兼容性和性能优化。通过以上方法,你可以顺利地在两个数据库...
指定文件夹下的所有文件上传至oracle的blob字段,java实现
在IT领域,尤其是在Java开发与Oracle数据库交互的过程中,处理BLOB(Binary Large Object)类型字段是一项常见且重要的任务。BLOB字段主要用于存储大量的二进制数据,如图像、音频、视频或任何其他非文本格式的数据...
### Java中读取Oracle数据库BLOB字段存储的图片方法详解 #### 一、背景与目的 在实际的应用开发过程中,经常会有将图片等二进制数据存入数据库的需求。Oracle数据库支持通过BLOB(Binary Large Object)类型来存储...
PL/SQL Developer提供了灵活的导入导出工具,结合特定的处理策略,可以有效地解决Oracle数据库中的数据导入导出问题,尤其是在处理大型对象(如CLOB和BLOB)时。这使得在测试环境搭建、故障恢复等场景下,可以更加...
分享在JAVA中Blob转换成String实例
这款工具设计的目的是为了帮助用户方便地从Oracle数据库中批量提取并导出Blob字段中的图片至指定的文件夹。 首先,用户需要在运行这个exe可执行文件前确保已安装了Oracle 10g客户端。Oracle 10g客户端是与Oracle...
2. **数据导出**:使用ORACLE提供的工具,如SQL*Plus或者PL/SQL Developer,或者通过编写SQL查询或存储过程来提取BLOB数据。通常,我们可以将BLOB数据转化为HEX字符串或Base64编码,以便在文本格式下传输。 3. **...
Oracle照片导出是一款基于C#开发的工具,主要用于从Oracle数据库中导出Blob类型的图片数据。Blob(Binary Large Object)是Oracle数据库用于存储大对象,如图像、音频或视频文件等非结构化数据的数据类型。这个工具...
### Oracle 数据库数据导入导出操作手册解析 #### 手册概述 该操作手册由中科软科技股份有限公司于2019年5月发布,旨在指导数据处理人员如何正确地使用Oracle数据库进行数据导入与导出操作。手册不仅包含了具体的...
本篇将详细介绍如何使用Java将MP3等二进制文件存入Oracle数据库中的BLOB字段。 首先,我们需要了解Oracle JDBC驱动,这是Java与Oracle数据库交互的基础。Oracle提供了一个名为ojdbc的JDBC驱动,它可以连接到Oracle...
### Oracle Blob类型转换为文件读取的相关知识点 在软件开发过程中,尤其是在处理数据库中的二进制大对象(Binary Large Object, 简称BLOB)时,经常需要将数据库中的BLOB数据转换为文件进行读取或处理。本文将详细...
使用 JAVA 读取 ORACLE BLOB 字段实现上传下载 BLOB(Binary Large Objects)是一种二进制大对象类型,常用于存储大对象,例如图形、声音等。我们可以将 BLOB 区分为三种形式:声像数据、二进制数据和大文本数据。...
在IT行业中,照片批量导入导出是一项常见的任务,特别是在数据管理、媒体库建设或网站维护等领域。本场景涉及的关键技术主要是数据库操作、图像处理以及批处理能力。以下将详细阐述这些知识点: 1. **Oracle数据库*...