我正在将一个包含所有数据库的大型 SQL 文件从服务器 A 迁移到服务器 B。在导入该文件之前,我需要删除将在服务器 B 上导入时重新创建的所有数据库。
如何使用 shell 脚本以编程方式删除多个 mySQL 数据库,同时保留特定数据库,例如 information_schema
.
最佳答案
以下内容选择您的 mySQL 用户可用的所有数据库。然后,它使用 grep
过滤出您想要保留的数据库。
DBUSER='user'
DBPASS='password'
SQLFILE='/path/to/file/databases.sql'
echo '* Dropping ALL databases'
DBS="$(mysql -u$DBUSER -p$DBPASS -Bse 'show databases' |
grep -v -e '[dD]atabase' -e mysql -e information_schema -e test)"
for db in $DBS; do
echo "Deleting $db"
mysql -u$DBUSER -p$DBPASS -Bse "drop database $db; select sleep(0.1);"
done
有一些部分答案,但我希望这会节省一些人的时间。
提示:您可以使用 $ echo $DBS
进行测试,以查看在键入第一个命令后将选择删除哪些数据库。 DBS="$(mysql -u$DBUSER -p$DBPASS -Bse '显示数据库' | grep -v DatabaseToFilter)"
关于mysql - 使用 shell 脚本删除多个 mysql 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22261085/