すべてのデータベースを1つのSQLでダンプする代わりに、すべてのデータベースをそれぞれの名前にバックアップする1行のコマンドを書いています。
例: db1 は db1.sql に保存され、db2 は db2.sql に保存されます。
ここまでで、すべてのデータベースを取得するために次のコマンドを集めました。
mysql -uuname -ppwd -e 'show databases' | grep -v 'Database'
次のようなことをするために awk でパイプすることを計画しています
awk '{mysqldump -uuname -ppwd $1 > $1.sql}'
しかし、それはうまくいきません。
私は bash を初めて使用するので、私の考えが間違っている可能性があります。
それぞれの名前でデータベースをエクスポートするにはどうすればよいですか?
更新:
わかりました、最終的に以下のヒントからそれを機能させることができました.
これが最終的なスクリプトです
# replace [] with your own config
# replace own dir to save
# echo doesn't work. hmm...
mysql -u[uname] -p'[pwd]' -e "show databases" \
| grep -Ev 'Database|information_schema' \
| while read dbname; \
do \
echo 'Dumping $dbname' \
mysqldump -u[uanme] -p'[pwd]' $dbname > ~/db_backup/$dbname.sql;\
done
ただし、のエコー部分は機能しません。