使用mysql命令删除多个数据库

时间:2011-01-11 11:27:49

标签: mysql

我有许多不同名称的数据库。 我想删除多个数据库,是否有任何命令,因为db的所有名称都不同。

例如:mysql db,Test db,live db。

5 个答案:

答案 0 :(得分:4)

据我所知,没有特定的命令/查询来删除多个数据库,而名称中没有特定的模式。甚至我被要求多次帮忙。所以我研究并发现没有具体的解决方案。然后我尝试了下面的黑客攻击。它没有给人太多麻烦。也许它对你也有帮助。

使用以下命令获取所有数据库。

SHOW DATABASES ;

将所有这些文件粘贴到Excel /其他文本文件中(我更喜欢NPP)。保留要从列表中删除的唯一名称。别忘了从列表中删除你的工作数据库。

在这些名称前添加DROP DATABASE

这很简单。复制&将所有这些粘贴到工作台中。您可以一次性执行所有这些操作。

答案 1 :(得分:3)

不幸的是,除非你创建自己的功能,否则没有这样的东西。

答案 2 :(得分:3)

如果您创建shell脚本,则应删除所有数据库。您需要对其进行编辑以满足您的需求。

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 Database | grep -v database | grep -v mysql | grep -v information_schema)"

for db in $DBS; do
    echo "Deleting $db"
    mysql -u$DBUSER -p$DBPASS -Bse "drop database $db; select sleep(0.1);"
done

答案 3 :(得分:1)

首先运行此查询以生成放置命令列表:

select CONCAT('drop database `', schema_name,'`;') as database_name from information_schema.schemata where schema_name like '%DATABASES_TO_REMOVE%' order by schema_name;

然后复制该查询的输出行并粘贴到查询窗口中

在我的情况下,我需要删除结果命令查询周围的单引号('),我使用简单的find + replace(通常是Ctrl + H,将'替换为)来完成

并执行(在我的案例中突出显示所有drop语句)!

答案 4 :(得分:0)

简单的bash脚本可以完成这项工作

    Arrays.sort(intervals, new Comparator<Interval>(){
       public int compare(Interval a, Interval b){
           return a.start - b.start;
       } 
    });

   Arrays.sort(intervals, (a, b) -> a.start - b.start);

在此提供用户名,密码和IP地址。