批量删除mysql数据库中的表

最晴天 发布于 2013/12/05 15:56
阅读 5K+
收藏 1

我的mysql数据库A中有很多以日期作为后缀的表:

t_gm_log_20130910、

t_gm_log_20130911、

t_gm_log_20130912、

t_gm_log_20130913;

t_item_log_20130910、

t_item_log_20130911、

t_item_log_20130912、

t_item_log_20130913;

t_vu_log_20130910、

t_vu_log_20130911、

t_vu_log_20130912、

t_vu_log_20130913

等等,如何删除一段时间内的这些表,只留下本月(一个月之内)的数据库表?使用java语言、 Navicat for MySql数据库,谢谢大家!!!

加载中
0
旋转360
旋转360

mysql中没有现有的工具可以直接实现,所以原理就是使用现有的功能实现drop table 的语句的自动拼写,从而达到简化目的。先得组合删除的SQL语句,使用下面的查询语句:

SELECT CONCAT( 'drop table ', table_name, ';' ) AS mutiply_delete_sql FROM information_schema.tables 
WHERE table_name LIKE 't_%_log_%';

"t_%_log_%"为要删除的表前缀(这个不一定是对的,也许是“t_%”,你自己试试就知道了,不过要是你这数据库里面没有其他的就用后面这个,前面的更精确了),执行此查询SQL语句后会生成一串SQL语句,必须再执行生成的这些SQL语句才能真正执行删除操作

一、执行下面的查询SQL语句得到删除的SQL语句

最好是在PHPMyAdmin里面去执行这个查询SQL语句,因为查询出来的结果可以复制,许多软件的话不能复制,像navicat那些。执行这个查询SQL只不过是为了得到后面删除表的SQL(假设不试用这个,你就需要自己一个一个的去写,,所以这个就算是一个工作吧),然后你会得到像这样的查询结果:二、复制查询出来的结果,再运行一次执行删除表

希望能帮到你。

0
最晴天
最晴天

引用来自“寂寞的烟客”的答案

mysql中没有现有的工具可以直接实现,所以原理就是使用现有的功能实现drop table 的语句的自动拼写,从而达到简化目的。先得组合删除的SQL语句,使用下面的查询语句:

SELECT CONCAT( 'drop table ', table_name, ';' ) AS mutiply_delete_sql FROM information_schema.tables 
WHERE table_name LIKE 't_%_log_%';

"t_%_log_%"为要删除的表前缀(这个不一定是对的,也许是“t_%”,你自己试试就知道了,不过要是你这数据库里面没有其他的就用后面这个,前面的更精确了),执行此查询SQL语句后会生成一串SQL语句,必须再执行生成的这些SQL语句才能真正执行删除操作

一、执行下面的查询SQL语句得到删除的SQL语句

最好是在PHPMyAdmin里面去执行这个查询SQL语句,因为查询出来的结果可以复制,许多软件的话不能复制,像navicat那些。执行这个查询SQL只不过是为了得到后面删除表的SQL(假设不试用这个,你就需要自己一个一个的去写,,所以这个就算是一个工作吧),然后你会得到像这样的查询结果:二、复制查询出来的结果,再运行一次执行删除表

希望能帮到你。

太感谢啦!谢谢!

0
旋转360
旋转360
@红薯  问答的地方怎么找到自己提出的和回答的?
红薯
红薯
都在个人空间里
返回顶部
顶部