簡體   English   中英

MySql:將 BLOB 轉儲到本地文件

[英]MySql: dump BLOB into local file

如何將 blob 的內容轉儲到文件中? 問題是生成的文件應該存儲在客戶端而不是服務器上,解決方案應該在 shell 腳本中處理。

SELECT ... INTO OUTFILE/DUMPFILE ...

將失敗,因為這會將文件直接保存在服務器上,而不是客戶端上。

echo "USE my_db; SELECT my_blob FROM my_table LIMIT 1" | mysql --<connection params> > $OUTFILE

將亂碼數據寫入本地 $OUTFILE,我想包括一些格式。

有沒有辦法取消所有格式,或者我怎樣才能將 1:1 轉儲到文件中?

任何幫助是極大的贊賞!

只要使用適當的選項,就可以使用MySQL客戶端完成此操作。

特別是,您應該使用雙靜默模式來抑制表格式和列名,並使用原始模式,以便不對任何字符進行轉義。

這是您嘗試執行的命令的更新,可以使您正確執行:

mysql --<connection params> \
my_db \
--raw \
--silent \
--silent \
--execute \
"SELECT my_blob FROM my_table LIMIT 1" > $OUTFILE

我不得不從表中提取所有文件,並根據之前的答案提出了一個簡單的 bash 腳本。

它不是很聰明,但它完成了工作:)

#!/bin/bash

myUser=user
myPass=secret
myHost=localhost
myDb=database

myCmd="mysql -u$myUser -p$myPass -h$myHost -D$myDb"

$myCmd -e "SELECT id, file_name FROM files;" |
        while read id file_name; do
                echo $id $file_name;
                $myCmd --raw --silent --silent -e "SELECT file_data FROM files WHERE id=$id LIMIT 1;" > "$file_name"
        done;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM