我需要导出 MySql 服务器中的大约 20 个数据库,其中包含大约 100 个不同的数据库,是否可以使用控制台命令将数据库名称列表导出到单独的文件中?(当然是在 Linux 下)。
答案1
echo "show databases" | mysql -N | while read db
do
mysqldump ${db} > ${db}.sql
done
您可以使用grep
删除不需要的数据库,mysql
例如information_schema
答案2
创建一个文本文件,将要备份的每个数据库的名称放在一行中
例如
db1
reports
然后使用这样的脚本
#!/bin/bash
ERRORS=0
while read db
do
echo "Processing $db"
mysqldump -u root -p365576dx "$db" >"$db".sql
EXITSTATUS=$?
if [ "$ERRORS" -eq "0" -a "$EXITSTATUS" -ne "0" ]
then
ERRORS="$EXITSTATUS"
fi
done<dbstodump
if [ "$ERRORS" -ne "0" ]
then
echo "Errors occurred see above for details"
exit 1
fi
答案3
最简单的解决方案是在命令行上使用简单的 for 循环。在我的示例中,我想导出数据库cars
、animals
和computers
。
for db in cars animals computers ; do mysqldump -uuser -ppassword "$db" > "$db.sql" ; done