如何将数据库中的每个表转储到具有该表名的单独文件中?
答案 0 :(得分:2)
您可能需要查看以下文章中建议的shell脚本:
脚本:
#!/bin/bash
db=$1
if [ "$db" = "" ]; then
echo "Usage: $0 db_name"
exit 1
fi
mkdir $$
cd $$
clear
for table in `mysql $db -e 'show tables' | egrep -v 'Tables_in_' `; do
echo "Dumping $table"
mysqldump --opt -Q $db $table > $table.sql
done
if [ "$table" = "" ]; then
echo "No tables found in db: $db"
fi
答案 1 :(得分:0)
这是一个Linux命令行,用于备份YOURDATABASENAME
中的所有表以分隔特定路径中的文件:
您必须使用适当的值替换YOURDATABASENAME
和YOURPATH
。
for I in $(mysql --database=YOURDATABASENAME -e 'show tables' -s --skip-column-names); do mysqldump YOURDATABASENAME $I | gzip > "/YOURPATH/YOURDATABASENAME/$I.sql.gz"; done
我使用它作为预定的cron作业来每天备份所有表。
注意:如果您从Linux命令行使用此命令,则必须在没有密码的情况下为YOURUSERNAME@localhost
的数据库添加具有全局权限的用户。否则,您必须按如下方式向脚本添加用户和密码选项,但这需要每个表的密码!
for I in $(mysql -u MYSQLUSERNAME -p --database=YOURDATABASENAME -e 'show tables' -s --skip-column-names); do mysqldump -u MYSQLUSERNAME -p YOURDATABASENAME $I | gzip > "/YOURPATH/YOURDATABASENAME/$I.sql.gz"; done