使用bash将图像blob从mysql下载到本地计算机?
我有一堆jpeg图像作为BLOB存储在mysql数据库中,我需要将其下载到我的本地机器上,以下内容不起作用,请有人建议 注意:我知道下面的代码只是覆盖了同一个文件,但对于本练习而言,这并不重要使用bash将图像blob从mysql下载到本地计算机?,mysql,bash,jpeg,Mysql,Bash,Jpeg,我有一堆jpeg图像作为BLOB存储在mysql数据库中,我需要将其下载到我的本地机器上,以下内容不起作用,请有人建议 注意:我知道下面的代码只是覆盖了同一个文件,但对于本练习而言,这并不重要 IFS=$'\n' for i in `mysql -sN -u******* -p******** -h****** -e "select my_images from mutable"; do echo $i > myimage.jpg done 我不确定您的代码中有什么不起作用,
IFS=$'\n'
for i in `mysql -sN -u******* -p******** -h****** -e "select my_images from mutable"; do
echo $i > myimage.jpg
done
我不确定您的代码中有什么不起作用,但您应该能够获取所有数据并保存每个图像,如下所示:
#!/bin/bash
counter=0;
for i in `mysql -s -N -u******* -p******** -h****** -e"select my_images from mutable"`; do
echo $i > "image${counter}.jpg";
counter=$((counter+1));
done
此代码可以从blob中提取图像,并且图像不会无效。
关键点是使用到DUMPFILE中,然后文件可以保存到由@secure\u file\u priv指示的文件夹中。
您可以使用以下命令查看@secure\u file\u priv
$ echo "SELECT @@secure_file_priv" | mysql -u * -p
$ mysqld --help --verbose | grep cnf -A2 -B2
您可以通过在my.cnf中设置@secure\u file\u priv值来更改它。
mysql中有很多my.cnf,您可以通过以下命令检查加载顺序
$ echo "SELECT @@secure_file_priv" | mysql -u * -p
$ mysqld --help --verbose | grep cnf -A2 -B2
但我仍然建议先使用/var/lib/mysql files/从数据库加载图像文件,然后再复制它,因为某些版本的mysql只能使用/var/lib/mysql files文件夹,即使您更改了@priv\u secure\u文件以指示另一个文件夹。我是否需要将这些文件存储为二进制文件,或者上述操作是否有效才是最重要的假设您将数据作为二进制文件存储在数据库中。如果是这样的话,上述内容就足够了。是的,你需要将文件以二进制文件的形式存储在文件系统中。我的ubuntu实例是remove,有没有办法验证这些图像是否有效?Ie视图them@godzilla-看看这幅画?如果数据正确地存储在数据库中,那么磁盘上的文件就不会有问题。@godzilla-在这种情况下,我认为图像没有正确地存储在您的数据库中?如果任何JPEG包含与ASCII空白对应的字节,这似乎会断开。对此有什么好的解决方法吗?我不完全确定是什么
mysql
返回,并且没有要测试的安装,但是要读取。我想这可能就是你所需要的,同时还需要引用$I
(也就是说,“$I”
,而不是$I
)。