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

Vin*_* HC 6 mysql

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

例如:mysql db,测试数据库,实时数据库.

hng*_*r18 6

首先运行此查询以生成删除命令列表:

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

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

就我而言,然后我需要删除结果命令查询周围的单引号 ('),我使用简单的查找 + 替换(通常按 Ctrl + H,将 ' 替换为 <empty >)

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


Jes*_*sik 5

如果您创建一个 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
Run Code Online (Sandbox Code Playgroud)


Gow*_*ani 5

据我所知,在名称中没有特定模式的情况下,没有特定的命令/查询可以删除多个数据库。甚至我多次被要求帮忙。所以我研究了一下,没有找到具体的解决办法。然后我尝试了下面的技巧。它的工作没有带来太多麻烦。也许它也可以对你有所帮助。

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

SHOW DATABASES ;
Run Code Online (Sandbox Code Playgroud)

将它们全部粘贴到 excel/其他一些文本文件中(我更喜欢 NPP)。保留要从列表中删除的唯一名称。不要忘记从列表中删除您的工作数据库。

DROP DATABASE在这些名字前面加上。

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


nan*_*nan 2

不幸的是,没有这样的事情,除非您创建自己的函数。