Java操作Oracle大字段(BLOB,CLOB)

6 篇文章 0 订阅
2 篇文章 0 订阅
import java.io.*;
import java.sql.*;
public class BlobClobExample {
public static void main(String[] args) {
try {
String url = "*******";
//Derby中的URL,后面是附加参数。表示数据库中没有此数据库时,会自动建一个
//其它数据库提供商的产品可以查阅其手册
Class.forName("*********").newInstance();
//加载驱动。关于加载驱动的细节,请阅读本博客的《JDBC中驱动加载的过程分析(上)》
//和《JDBC中驱动加载的过程分析(下)》
//在数据库Mysql的驱动加载时也建议在Class.forName()后,继续调用newInstance()方法
2
//没有本质区别
Connection conn = DriverManager.getConnection(url); //建立连接
Statement s = conn.createStatement(); //创建Statement对象
s.executeUpdate("drop table documents");
//这句是为了避免再次创建表documents
s.executeUpdate("CREATE TABLE documents(id INT, text CLOB(64 K) , photo Blob(1440 K))");
//以上就是创建包含Clob和Blob对象的表的过程
//和将一般的字段差不多,后面括号中代表该对象的大小,其语法为:
// CLOB (length [{{K |M |G}]) 表示长度为K、M、G等,没有带表示比特
conn.commit(); //提交操作
//以下是将本地文件中,本程序的源文件加载为一个流,用于向数据库中写入Clob字段
File file1 = new File("BlobClobExample.java");
int len1 = (int) file1.length();
InputStream fis1 = new java.io.FileInputStream(file1);
//以下是将当前源代码目录的子目录“11”下的“1.JPG”文件加载为一个流,
//用于后面向数据库中写入Blob字段
File file2 = new File("c:\\11\\1.JPG");
int len2 = (int) file2.length();
InputStream fis2 = new FileInputStream(file2);
//以上两个简单吧!!
//创建一个PreparedStatement对象,用于批量插入内容
//使用PreparedStatement对象可以节省,数据库编译SQL指令的时间,
//因为在使用PreparedStatement对象时,该SQL语句是预先编译好了,
//对于某些变化的参数使用占位符(Place Holder)代替
//这对于以后将要执行多次的同一操作,该操作仅仅是参数不同,是极其有利
//比如在网页上输入客户信息时,用户要填入的数据基本是一样的(你可以填也可以不填)
//这时后台的数据库可以使用PreparedStatement对象,每次都是设置参数,执行操作
PreparedStatement ps = conn.prepareStatement("INSERT INTO documents VALUES (?, ?,?)");
ps.setInt(1, 250);
ps.setAsciiStream(2, fis1, len1);
ps.setBinaryStream(3,fis2,len2);
//以上三步是设置占位符的数值
ps.execute(); //执行操作
//以上四步可以重复执行。PreparedStatement就是为了适用于此用途
conn.commit();
//以上完成了数据的写入
//以下是数据的读出
ResultSet rs = s.executeQuery("SELECT text , photo FROM documents WHERE id = 250");
while (rs.next()) {
Clob aclob = rs.getClob(1); //和提取一般对象一样
InputStream is = rs.getAsciiStream(1); //特殊的,对于与得到Clob的流
//这是得到Clob、Blob流的第一种方法
3
//以下是对流进行处理的过程。Clob本身是包含大字符的对象
//顺其自然,以下是使用java IO中读取字符流的方法读取它
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line = null ;
while(null != (line = br.readLine())){
System.out.println(line); //将其输出至屏幕,实际你可以按照需要处理
}
is.close();
java.sql.Blob ablob = rs.getBlob(2); //和操作其它基本类型的字段一样
System.out.println(ablob.length()); //简单地操作Blob的实例
//实际你可以使用Clob的API对其进行任何它允许的操作,请查API
InputStream bis = ablob.getBinaryStream() ; //得到Blob实例的字节流
//这是操作Clob、Blob等对象的第二种方法,也是最自然的用法
OutputStream os = new FileOutputStream("11.jpg");
//用于将数据库中的Blob存放到目前目录的“11.jpg”文件中
int b = bis.read(); //以下就是象操作其它java字节流一样操作了
while (b != -1 ) {
os.write((char)b);
b = bis.read();
}
os.flush();
os.close();
bis.close();
}
} catch (Exception e) {
System.out.println("Error! "+e);
}
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle数据库中的BLOBCLOB是用来存储大数据(二进制大对象和字符大对象)的数据类型。BLOB可以存储二进制数据,如图片、音频和视频等,而CLOB则用于存储文本数据。 要导出BLOBCLOB数据,可以使用Oracle数据库提供的工具和方法。以下是一种常见的导出方法: 1. 使用 Oracle SQL Developer 进行导出: - 打开 Oracle SQL Developer 工具,并连接到要导出的数据库。 - 在“工具栏”上选择“导出数据”选项。 - 在导出向导中,选择要导出的表并指定目标文件夹。 - 在“导出格式”下,选择“BLOB”或“CLOB”。 - 点击“下一步”并根据导出设置完成导出过程。 要导入BLOBCLOB数据,也可以使用类似的方法: 1. 使用 Oracle SQL Developer 进行导入: - 打开 Oracle SQL Developer 工具,并连接到要导入的数据库。 - 在“工具栏”上选择“导入数据”选项。 - 在导入向导中,选择要导入的表和数据文件。 - 在“导入格式”下,选择“BLOB”或“CLOB”。 - 点击“下一步”并根据导入设置完成导入过程。 此外,还可以使用PL/SQL语言编写脚本来导出和导入BLOBCLOB数据。使用PL/SQL可以更灵活地进行数据处理和转换。可以编写一段脚本来查询BLOBCLOB数据,并将其导出到文件中,然后在另一个数据库上运行脚本来导入数据。 总之,Oracle数据库提供了多种方法来导出和导入BLOBCLOB数据。使用这些方法,可以方便地将大数据对象从一个数据库迁移到另一个数据库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值