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

首先用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

猜你喜欢

转载自blog.csdn.net/weixin_43025071/article/details/88603257