RDBMS(关系型数据库)BLOB类型字段存储图片迁移问题完美解决方案

8 篇文章 0 订阅
6 篇文章 0 订阅

目录

1、问题描述:

2、问题查找:

3、解决方法:

(1)表输入:

(2)执行SQL语句修改:


 

1、问题描述:

项目在RDBMS(关系型数据库)的mysql中使用BLOB类型字段存储了图片,由于需求问题,需要迁移图片到另外的一个RDBMS(关系型数据库)中去,思路是借助ETL工具kettle迁移数据,由于图片存储较大,kettle会比较耗费内存,设备内存不是特别的大,所以设置内存中一次存储的记录数为500(数据量少点就行),可以实现数据迁移。但是数据迁移后发现一个问题:

迁移后的BLOB类型字段存储的图片不能看了,通过navicate将该字段显示为图片时,无法查看该图片,并且该字段的存储也变成了原来存储的1.6-2倍。

2、问题查找:

RDBMS(关系型数据库)迁移BLOB类型字段存储的图片,产生迁移后图片不能查看,并且存储变成原来的1.8-2倍。本人思考可能是由于图片在RDBMS(关系型数据库)中存储的是二进制,在通过ETL工具kettle迁移过程中可能由于编码问题,让图片的二进制进行了编码,最终导致迁移后图片不能查看了。

3、解决方法:

通过ETL工具kettle迁移RDBMS(关系型数据库)中BLOB类型字段存储的图片数据时,在表输入的时候不要直接读取BLOB类型的二进制图片信息,要通过HEX(pic_column)函数将二进制转换为十六进制,然后将十六进制的信息存储到目标数据库中,等数据都迁移完毕后,再将十六进制的信息通过UNHEX(pic_column)函数将十六进制转换为二进制的信息,通过执行SQL的update语句,将十六进制信息修改为二进制信息,这样图片就可以正常显示了。此方式可以完美解决BLOB类型图片迁移问题。具体步骤如下:

(1)表输入:

SELECT id,HEX(pic_image) FROM tm_pic_original

(2)执行SQL语句修改:

UPDATE picture_info SET pic_image = UNHEX(pic_image)

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值