我正在迁移一个包含从服务器A到服务器B的所有数据库的大型SQL文件。在导入文件之前,我需要删除将使用服务器B上的导入重新创建的所有数据库。
如何使用shell脚本以编程方式删除多个mySQL数据库,同时保留information_schema
等特定数据库。
答案 0 :(得分:0)
以下选择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 'show databases' | grep -v DatabaseToFilter)"