2011-02-14 23 views
3

私はzipを含むblobフィールドを持つmysqlデータベースを持っており、bashからディスク上にファイルとして保存する必要があります。私は次のことをしていますが、最終結果はジップとして読み取られません...私は何か間違っているか、ファイルが実際にジップではありません(データベースのエントリは実際に地震局によって作成されるので、それを支配しない)?blobからディスクにblobフィールドを保存する

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

ファイルエディタでfile.zipを開き、列見出しを含む最初の行を削除します。それから、 'unzip'はそれをzipファイルとして認識しません。

答えて

-1

あなたが使用することができますgzip圧縮されたブロブについて

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

これにより、「$ sql:ambiguous redirect」エラーが発生しました。しかし、私の構文(echo "" | mysql)で-Nオプションを使うと...ファイルはまだzipではないので、dbに何か問題があると思います。 – nareto

+0

は '<<<' – ajreal

4

のように、列をスキップする必要があります:私はzipファイルでこれを試していない

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

0

これを行う適切な方法は、DUMPFILEを使用することです。そうしないと、mysqlがデータを混乱させます。

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

+0

にする必要がありますmysqlユーザにグローバル特権FILEが与えられていること、および(リモート接続を介してローカルにはなく)mysqlサーバにファイルをダンプさせたいということです。 – Ulrik

0

私は、これは古い質問ですけど、私は答えを自分で必要なので、これは私のために働いていたものです。

最後にmysqlが改行文字を追加していることがわかりました。これは正しいバイナリ値が残る前に削除する必要があります。

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