大数据Blob Clob在Mysql与oracle写入问题

写在前面

写这片文章是缘于在网上看到几篇关于在MYSQL写入图片遇到乱码时的问题,刚好最近在写相关的代码,就列出几个解决的方法(虽然现实中是很少直接写入图片这种大数据的,但各数据库厂商在技术上是完全可以实现的.

打开数据库

String dbType="mysql.";
		Properties pros=new Properties();
		pros.load(new FileInputStream("src/db.properties"));
		Class.forName(pros.getProperty(dbType.concat(DRIVER)));
		Connection conn=DriverManager.getConnection(
				pros.getProperty(dbType.concat(URL)),pros.getProperty(dbType.concat(USERNAME)),pros.getProperty(dbType.concat(PASSWORD)));
		PreparedStatement pstmt=conn.prepareStatement("update dummy set image=? where username=?");


方法一

在原文无出现乱码情况下,是可以直接将输入流传入PreparedStatement.setBlob(index,inputStream)的.

FileInputStream fis=new FileInputStream(file);
pstmt.setBlob(1, fis);

下面开始主题,在出现乱码情况:

方法二

创建一个空的blob,并将输入流写入blob,这也是spring源码的方法之一,关于inputStream写到outputStream,我们还可以使用spring的org.springframework.util.FileCopyUtils.copy(input,output)代替,还可以省去流的关闭操作.
并且,该方法是在不出现写入乱码情况下是可以通用的,但在oracle下有点区别:
如果使用的ojdbc14.jar时,需用oracle自定义的BLOB(大写)创建一个空的blob,而不能用Connection,oracle的Connection实现类是没有createBlob()方法的.
如果使用ojdbc6.jar的话,则
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
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数据。使用这些方法,可以方便地将大数据对象从一个数据库迁移到另一个数据库。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值