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指令中的第一行,因为第一行是无效的
       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值