mysql,如何删除表名以数字开头的表

时间:2015-09-20 03:18:46

标签: mysql

我的数据库中有1200个表,其中一半的表名是以数字开头的,只是看起来像这样

mysql> SHOW TABLES;

    1000_quarterly_1000
    1001_quarterly_1001
    ...
    quarterly_1000
    quarterly_1001
    ....

我希望删除名称以数字开头的所有表格,例如必须删除表格1000_quarterly_1000。因为表已从当前数据库中删除,我想将它们存储到我已定义的其他数据库中。

我如何编写mysql query来执行此操作,因为我可以使用Python执行此操作,但mysql query可以更好。

2 个答案:

答案 0 :(得分:1)

select concat('drop table ',t.table_schema,'.',t.table_name,';') drop_ddl 
from information_schema.tables t where t.table_name rlike '[0-9].'  

答案 1 :(得分:1)

如果要在一个语句中删除表,可以将语句构造为:

select concat('drop table ', group_concat(t.table_schema, '.', t.table_name separator ', '))
from information_schema.tables
where left(t.table_name, 1) between '0' and '9';

然后您可以尝试执行命令:

declare @sql varchar(65000);

select @sql := concat('drop table ', group_concat(t.table_schema, '.', t.table_name separator ', '))
from information_schema.tables
where left(t.table_name, 1) between '0' and '9';

prepare s from @sql;

execute s;