首页 > 代码库 > MySQL批量删除表
MySQL批量删除表
overview
之前在工作中调试时建了一个每分钟执行一次的cron定时任务,每分钟均产生一个带时间信息的表名称,并忘了删除这个定时任务,待发现时已经有将近3000个新建的表了,由于单条单条地删除很慢,现需要批量删除这些带时间信息的表。
theory&&measure
theory
1 登陆mysql的information数据库,查找tables表,找出需要删除的表所在的数据库下的 所有符合时间要求的表名称
2 将查询出来的表名称拼接成drop table指令数据的形式,例如
drop table weekly_with_you_2014_12_28;
3 登陆到mysql的yc_market数据库,执行上一步输出的所有drop指令
measure
具体实现非常简单,只需要在linux终端敲入如下命令:
[jiangjianjian@h6 ~]$ echo "select concat(‘drop table ‘, table_name ,‘;‘) from TABLES where TABLE_SCHEMA =‘yc_market‘ and table_name like ‘weekly_with_you_2014%‘ ;" | mysql -uroot -p123456 -h127.0.0.1 information_schema | sed -n ‘2,$p‘ | mysql -uroot -p123456 -h127.0.0.1 yc_market
其中yc_marke是需要删除的表所在的数据库
sed命令用来跳过产生的所有的drop table指令中的第一行,因为第一行是无效的
MySQL批量删除表
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。