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指令中的第一行,因为第一行是无效的
       

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。