MySQL-mysql 如何一次性删除多个相同前缀或者后缀的数据库?

MySQL-mysql 如何一次性删除多个相同前缀或者后缀的数据库?

夜无邪 发布于 2017-05-17 字数 242 浏览 1334 回复 3

比如有数据库:
dbname1_20120411_bak,
mydb1_20120322_bak,
mydb2_20120210_bak,
dbname2_20120209_bak,
dbname3_20120208_bak,
........
以上都有相同的后缀 bak, 如何一性的全部删除?或者其他变通的简单方法。。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

灵芸 2017-10-01 3 楼

想不到什么简单的方法,drop database 只能一次性删除一个DB,以下是两种解决办法:
1、从information_schema.SCHEMATA表中找出所有的具有相同后缀bak的库,通过concat方法拼凑出sql语句,再程序里面执行删除;
SELECT CONCAT('DROP DATABASE ',tmp_db.SCHEMA_NAME,';') FROM (SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME LIKE '%_bak') AS tmp_db;

2、先从information_schema库中删除所有的要删除的数据库信息,再从服务器上删除数据库文件

瑾兮 2017-09-05 2 楼

找到MYSQL的库存放目录,直接mv *_bak /tmp/ ,不需要停数据库

虐人心 2017-06-27 1 楼

假设前缀是"kl":
select group_concat(concat('drop database ',schema_name,';') separator '') from information_schema.schemata where schema_name like 'kl_%';

然后把输出放到del.sql里,再用source导入就可以了。