码迷,mamicode.com
首页 > 数据库 > 详细

MySQL根据正则表达式批量删除表

时间:2014-10-14 05:21:18      阅读:434      评论:0      收藏:0      [点我收藏+]

标签:用户名   服务器   删除   sql语句   表达式   

    最近在维护一个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

MySQL根据正则表达式批量删除表

标签:用户名   服务器   删除   sql语句   表达式   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!