使用shell脚本删除多个mysql数据库

时间:2014-03-07 21:32:55

标签: mysql linux shell

我正在迁移一个包含从服务器A到服务器B的所有数据库的大型SQL文件。在导入文件之前,我需要删除将使用服务器B上的导入重新创建的所有数据库。

如何使用shell脚本以编程方式删除多个mySQL数据库,同时保留information_schema等特定数据库。

1 个答案:

答案 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)"