mysql正则删除_MySQL根据正则表达式批量删除表

最近在维护一个wordpress商城项目,商城是多站的,会为独立的站创建出几张表。项目在测试服务器上,貌似是被爬虫恶意注册,产生了几千个用户,就产生了几万张表,导致数据库导入导出都像蜗牛一样,慢得要死,所以就只能上服务器执行SQL删除了,先暂时关闭了注册的功能,由于注册貌似没有验证的条件造成的,然后就写了几条SQL语句删除这几万张多余的表。

首先用SSH登录了服务器,登录mysql数据库:

mysql -uroot -proot

注:-u 后面为你的数据库用户名    -p后面为你的数据库密码

然后生成根据正则表达式删除表的sql语句并保存:

select CONCAT( ‘drop table ‘, table_name, ‘;‘ )  FROM information_schema.tables

where table_name REGEXP ‘ss_[0-9]{3,}..‘  into outfile ‘del.sql‘;;

注:REGEXP 后面跟的是需要删除表名的正则表达式

这里有一些常用的MySQL正则表达式规则:

逻辑或: select * from s_user where name REGEXP ‘a|b|c‘

特定字符字符:    select * from s_user where name REGEXP ‘[abc]123‘

匹配范围:        [0-9]  [a-z]

重复元字符:      * 零个或多个

+ 一个或多个

? 零个或一个

{n} 指定次数

{n,m}指定次数范围

{n,} 指定次数范围以上

定位元字符:       ^行首

$行尾

任意多个字符:     ..

....更具体的匹配规则可以google一下

这里的SQL文件默认是导入到了/var/lib/mysql/del.sql这里

然后我们在执行del.sql里面的命令就可以了,如果不放心的话,可以使用vi打开del.sql看一下里面的内容:

执行:        source del.sql

原文:http://wujingchao.blog.51cto.com/6558896/1563513

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值