我的数据库中有1200个表,其中一半的表名是以数字开头的,只是看起来像这样
mysql> SHOW TABLES;
1000_quarterly_1000
1001_quarterly_1001
...
quarterly_1000
quarterly_1001
....
我希望删除名称以数字开头的所有表格,例如必须删除表格1000_quarterly_1000
。因为表已从当前数据库中删除,我想将它们存储到我已定义的其他数据库中。
我如何编写mysql query
来执行此操作,因为我可以使用Python
执行此操作,但mysql query
可以更好。
答案 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;