如何清除tidb集群上那些空的数据库

SELECT CONCAT(‘drop database ‘,TABLE_SCHEMA,’;’) from拼上你的查询语句就可以了,可以把这2w多个drop输出到.sql文件,source一下或者mysql < xxx.sql都行

1 个赞

嗯,可能你说的是一种方案吧,我采用的是把查询到的所有空库对应的名称粘贴到txt文件中,然后通过列编辑txt文件将每一个空库拼接成“drop database 库名;”形式,每行对应一个drop库操作,然后保存为sql文件。最后在客户端运行sql文件即可

处理完了发下过程啊

更加推荐上面hoho大佬的方法,自动化程度比较高,减少人工操作步骤,方便高效

这是查询空库名称的sql语句:
SELECT t.SCHEMA_NAME FROM information_schema.SCHEMATA t WHERE t.SCHEMA_NAME NOT IN
(SELECT tmp.TABLE_SCHEMA FROM information_schema.TABLES tmp GROUP BY tmp.TABLE_SCHEMA )
ORDER BY t.SCHEMA_NAME

其实差不多,那种语句需要修改,否则直接拼接是会报错的,因为查询的结果是列的集合,需要循环处理,直接把结果拷贝出去一样在txt文本编辑列更省事。

这个直接拼接应该不行吧,查询结果是多行数据,直接拼接估计会报语法错误。我的操作是将查询结果直接复制出去在文档中处理。

这样拼接是可以的,查询结果是多行,每一行是一个带分号的drop语句,把结果全选复制出来,就是处理脚本了,不需要做二次处理了。
我们经常用这种方法生成insert语句之类的。

1 个赞

嗯,这种方法更智能一些

问题解决了吗

已经删除了

我看行

已经标记最佳答案了,解决方案是这个

1 个赞

解决了,上边有我查询空库的sql语句,我的做法是将查询结果拷贝出来后编辑的,处理成drop database 名称;的sql语句,然后直接执行操作的。

你是来刷积分的吗

:joy:我应该不需要刷了吧~只是看到有些有意思的发言回复一下~
image

1 个赞

厉害了我的哥,你这积分太让你羡慕了,我想考个试都得积攒好久

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。