MySQL Dropping Tables - PullRequest
       8

MySQL Dropping Tables

3 голосов
/ 10 февраля 2011

Какой синтаксис для MySQL я бы использовал, чтобы отбрасывать несколько таблиц, которые имеют схожий с ними шаблон? Что-то вроде:

DROP TABLES FROM `Database1` LIKE "SubTable*"

Ответы [ 4 ]

3 голосов
/ 25 марта 2011

Поскольку DROP TABLE поддерживается подготовленными операторами, это можно сделать следующим образом -

SET @tables = NULL;
SELECT GROUP_CONCAT(table_schema, '.', table_name) INTO @tables FROM information_schema.tables 
  WHERE table_schema = 'Database1' AND table_name LIKE 'SubTable%';

SET @tables = CONCAT('DROP TABLE ', @tables);
PREPARE stmt1 FROM @tables;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
2 голосов
/ 10 октября 2013

Как отмечено в этом вопросе , ответы, приведенные здесь (Angelin и Devart), не будут работать при любых обстоятельствах без предварительного увеличения предела group_concat, как показано ниже:

SET group_concat_max_len = 1024 * 1024 * 10;
1 голос
/ 10 февраля 2011

Нет. Но вы можете выбрать имена таблиц из information_schema базы данных:

select table_name
  from information_schema.tables
 where table_schema = 'Database1'
   and table_name like 'SubTable%'

И после этого повторять имена таблиц в наборе результатов и отбрасывать их

0 голосов
/ 23 августа 2012

mysql> SELECT CONCAT ("DROP TABLE", GROUP_CONCAT (TABLE_NAME)) AS STMT

FROM information_schema.TABLES

WHERE TABLE_SCHEMA = "your_db_name" И TABLE_NAME НРАВИТСЯ "ваше состояние" в outfile '/tmp/a.txt';

mysql> source /tmp/a.txt;

...