此操作危险!请谨慎做好确认!
因为db或者table的信息都保存在MySQL内置的 information_schema数据库的表中,因此思路为:like查询information_schema中的相关表名,拼接SQL后进行批量删除。
批量删除DB(以前缀为KAI_FA_GE示例):
SELECT CONCAT( 'DROP DATABASE ', SCHEMA_NAME, ';') FROM information_schema.SCHEMATA WHERE information_schema.SCHEMATA.SCHEMA_NAME LIKE 'KAI_FA_GE%' INTO OUTFILE '/tmp/db.txt';
5.7 后执行此会报如下错误:
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
然后在MySQL配置文件里面加入
[mysqld]secure-file-priv = ""
然后重启mysql即可解决。
然后 source /tmp/db.txt 即可全部清除。
批量删除Table(以前缀为KAI_FA_GE示例):
SELECT CONCAT( 'DROP TABLE ', TABLE_NAME, ';') FROM information_schema.TABLES WHERE information_schema.TABLES.TABLE_NAME LIKE 'KAI_FA_GE%' INTO OUTFILE '/tmp/table.txt' ;
然后 source /tmp/table.txt 即可全部清除
需要注意的是:批量操作中可能有部分删除失败而漏掉的,执行完后需要检查一下。
linux技术交流群:295294329