从bash将blob字段保存到磁盘

时间:2011-02-14 11:08:45

标签: mysql bash

我有一个包含zip的blob字段的mysql数据库,我需要将它作为文件保存在磁盘上,来自bash。我正在做以下但最终的结果并不是作为一个拉链...我做错了或者文件存储实际上不是拉链(数据库中的条目实际上是由地震台创建的,所以我无法控制它?)

echo "USE database; SELECT blobcolumn FROM table LIMIT 1" | mysql -u root > file.zip

然后我用文件编辑器打开file.zip并删除包含列标题的第一行。然后'解压'不会将其识别为zip文件。

4 个答案:

答案 0 :(得分:4)

对于gzip压缩的blob,您可以使用:

echo "use db; select blob from table where id=blah" | mysql -N --raw -uuser -ppass > mysql.gz

我没有用zip文件试过这个。

答案 1 :(得分:0)

执行此操作的正确方法是使用DUMPFILE,否则mysql会弄乱您的数据。

mysql -uroot -e "SELECT blobcolumn INTO DUMPFILE '/tmp/file.zip' FROM table LIMIT 1" database

答案 2 :(得分:0)

我知道这是一个老问题,但我自己需要答案,所以这对我有用。

我发现mysql在末尾添加了换行符,需要在正确的二进制值保留之前将其删除。

echo "USE database; SELECT blobcolumn FROM table LIMIT 1" | mysql -N --raw -u root | head -c -1 > file.zip

答案 3 :(得分:-1)

您需要跳过列,例如

sql="USE database; SELECT blobcolumn FROM table LIMIT 1"
mysql -u root -N <<< $sql > file.zip