mysql blob 导出_mysql navcate longblob 查询结果导出倒入

本文探讨了将图片直接存储在MySQL数据库中所遇到的问题,包括丢图现象、预览不便、数据恢复困难及导出部分数据的复杂性,并提供了解决这些问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于之前项目为了查询方便,且不受权限控制。所以把image储存在了数据库。但是也遇到了很多瓶颈问题。

1,丢图从日志上查询获知,丢图95%以上是由于mysql的timeout时间失效引起的。(由于另一个pdf文件也此存储在mysql上面pdf频繁存储到数据库,占用连接。一个图片有时候可以有20-30m的大小,写一张图片耗费的时间还是比较长,所以引起丢图的现象)。

2,图片预览特别不方面,必须借助navicat工具,而且查看特别费劲。

3,数据恢复特别困难(如果没有备份的情况下,那就不用说)但是用navicat导出结构和数据以后,数据大了以后(10G)以后。导入不是内存溢出,就是导入失败(莫名的)

4,导入导出部分数据困难。

但是项目已经上了,要升级。也是一件很是痛苦的事情。但有时候不需要整张image表都导出。我只是看其中几条数据。然后恢复到另外一个电脑上。

笨的办法就是利用navicat工具查询分析器,把需要的结果查询出来(单张表一定要查询*列),然后利用其导出功能把数据导出成.sql文件,如下图

384e2a014714cf5db8c531a223deb795.png

65c5199f6c546a51e9c460142a5da103.png

c610f1b0a5c089059da2a9aad7b19f10.png

e160639edc99938844e1fa3b896c37b6.png

最后导出。在我的桌面上就多了一个abc.sql文件。

这样就把一张大表的longblob字段的给导出了。但是这个文件也不小,100m-500m不等。这样导出的sql缺少一个表名。需要在每句insert 语句后面加上表名,但是编辑这样的文件也是一件极为痛苦的事情。

通过bing查询得知,可以用mysql的load命令把这些内容导入指定的表名。

把abc.sql文件复制到mysql要导入的数据库目录下。例如我要把abc.sql导入数据库aa库,那么在mysql的datadir目录中一定有个aa的目录。那么就把abc.sql复制到aa目录下。

cmd进入mysql的bin目录,然后

mysql -u root -p dbname;

输入密码

然后就可以用

load data infile 'abc.sql' into table tablename;

我的数据库版本是mysql v5.621

其他版本没有试过。

MySQL中的BLOB(Binary Large Object)类型用于存储二进制数据,如图片、音频文件、视频等。当需要将包含BLOB类型字段的数据库表导出(备份)并恢复到另一个地方时,通常有以下步骤: 1. **导出数据**: 使用mysqldump工具,它可以将整个数据库或者指定表导出为SQL脚本文件。例如,命令如下: ``` mysqldump -u [username] -p [database_name] > backup.sql 其中,[username]是你的MySQL用户名,[database_name]是要备份的数据库名。 如果你想只导出特定包含BLOB字段的表,可以在命令后加上表名,如 `table_name`。 2. **备份BLOB内容**: BLOB类型的字段在脚本中通常是作为二进制字符串显示的,你需要单独处理这部分数据。如果数据量较大,可能需要先下载到本地文件,再复制到新的数据库。 3. **处理BLOB内容**: 查看导出的SQL脚本,找到BLOB字段对应的行,将其保存为独立文件,然后在恢复时重新插入到新数据库中。 4. **恢复数据**: 用mysql命令恢复备份文件,比如: ``` mysql -u [username] -p [new_database_name] < backup.sql 先导入所有非BLOB字段,然后再处理BLOB字段,将其替换为之前保存的文件路径或直接从文件读取内容插入。 5. **处理BLOB字段**: 在恢复过程中,找到BLOB字段的地方,使用LOAD DATA INFILE语句加载本地文件,如: ```sql LOAD DATA LOCAL INFILE '/path/to/binary/file.ext' INTO TABLE new_table FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' IGNORE 1 ROWS; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值