我有一个包含zip的blob字段的mysql数据库,我需要将它作为文件保存在磁盘上,来自bash。我正在做以下但最终的结果并不是作为一个拉链...我做错了或者文件存储实际上不是拉链(数据库中的条目实际上是由地震台创建的,所以我无法控制它?)
echo "USE database; SELECT blobcolumn FROM table LIMIT 1" | mysql -u root > file.zip
然后我用文件编辑器打开file.zip并删除包含列标题的第一行。然后'解压'不会将其识别为zip文件。
答案 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