MySQL两步删除多个同名前缀(后缀)的表(已经260000张表删除的实战)

本文以前缀为例子,该记录是为了删除因为误操作等造成大量同名的数据表时候所执行的语句;

例如在a数据库下,存在下表:

aaa_112345;

aaa_212345;

aaa_313245;

aaa_412345;

aaa_512314;

......

现在需要将这些表全部删除,步骤:

1、添加配置选项到my.ini文件,若原来有此配置,则暂时注释,该配置是为了让生成的文件的默认存储位置发生改变:

  secure-file-priv=""

2、重启数据库

3、登录数据库查看配置是否生效:

mysql> show variables like '%secure%';
MySQL两步删除多个同名前缀(后缀)的表(已经260000张表删除的实战)

 当查询结果如上时,配置成功。

此时再执行的生成文件路径为:use 库名 使用的库所在下的路径mysql/data/库名/文件。

4、use到所在的数据库后,执行如下语句,将需要删除的表文件生成到文件内:

select concat ('drop table ',table_name,';') from information_schema.tables where table_name like 'status%' into outfile '1.sql';

解析:

(1)select concat ('drop table ',table_name,';') from information_schema.tables where table_name like 'status%';

匹配表名为status的表,并打印。

(2)当“into outfile '1.sql' ”单独使用时的完整语句如下:

select * from  (表名) into outfile '1.sql' ;

将查询的结果输出到文件1.sql。

5、此时将生成的文件导入:

source 1.sql

则可以完成以表明为条件删除多个同名表的操作。

感谢大神文档分享。

参考来源:

(1)http://www.yayihouse.com/yayishuwu/chapter/2707

(2)https://blog.csdn.net/weixin_44595372/article/details/88723191

上一篇:== 和 equal 的区别


下一篇:Vue3