我正在编写一个单行命令,将所有数据库备份到各自的名称中,而不是使用将所有数据库转储到一个 sql 中。
例如:db1 保存到 db1.sql,db2 保存到 db2.sql
到目前为止,我收集了以下命令来检索所有数据库。
mysql -uuname -ppwd -e 'show databases' | grep -v 'Database'
我打算用 awk 通过管道来执行类似的操作
awk '{mysqldump -uuname -ppwd $1 > $1.sql}'
但这是行不通的。
我是 bash 的新手,所以我的想法可能是错误的。
我应该怎么做才能使其以各自的名称导出数据库?
update:
好的,最终必须根据下面的提示使其正常工作。
这是最终的脚本
# 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
但回声部分不起作用。
mysql -uroot -N -e 'show databases' | while read dbname; do mysqldump -uroot --complete-insert --some-other-options "$dbname" > "$dbname".sql; done
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)