从mysql中的数据库转储表?

时间:2010-06-22 05:45:01

标签: mysql mysqldump

如何将数据库中的每个表转储到具有该表名的单独文件中?

2 个答案:

答案 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中的所有表以分隔特定路径中的文件:

您必须使用适当的值替换YOURDATABASENAMEYOURPATH

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