mysql批量删除表table_name喜欢'%短语'

时间:2015-10-30 19:11:22

标签: mysql sql

好的我有大约68,000个表,我需要删除一个特定的短语。当我运行命令时:

SHOW TABLES其中table_name类似于'%词组&#39 ;;

我得到了我需要的所有结果,但是我尝试运行以下代码,它只消除了68,000中的6个:

SET @temp_statement = NULL;
SELECT 
  GROUP_CONCAT(table_schema, '.`', table_name, '`') INTO @temp_statement 
FROM
  (
  SELECT
    table_schema, table_name
  FROM
    information_schema.tables 
  WHERE
    table_schema = 'db_name_goes_here' AND table_name LIKE 'table_base_name_here_%'
  LIMIT 10 -- a limit to avoid exceeding group_concat_max_len
  ) JUST_A_TEMP_NAME;

-- up to this point, @temp_statement holds something like this:
-- mydb.`table1`,mydb.`table2`,...,mydb.`tableN`

SET @temp_statement = CONCAT('DROP TABLE ', @temp_statement);
SELECT @temp_statement; -- let's see the SQL statement before executing it
PREPARE stmt1 FROM @temp_statement;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
SET @temp_statement = NULL; -- clean up

1 个答案:

答案 0 :(得分:0)

您可以分两步完成此操作:

首先执行:

statement
--------------------------------------------------------
DROP myschema.mytable1;
DROP myschema.mytable2;

输出如下:

int array[5] = { 1 };

然后获取输出,并将其作为一批SQL语句再次执行。

对我来说,这是最务实的方法。