MySQL - удаление некоторых конкретных таблиц из большой базы данных - PullRequest
2 голосов
/ 13 мая 2011

Как мы можем удалить некоторые конкретные таблицы из базы данных. Например, у меня есть база данных с более чем 20 000 таблиц, и мне нужно удалить ту, которая содержит некоторые конкретные строки в своих именах. Так как я могу это сделать? Есть ли способ получить все имена таблиц из базы данных?

Ответы [ 3 ]

7 голосов
/ 13 мая 2011

Вы можете получить таблицы с определенными именами из information_schema.

Вот как вы получаете список таблиц в вашей базе данных:

select table_name from information_schema.tables;

Имея это в виду, выМожно сгенерировать скрипт для удаления необходимых вам таблиц:

select concat('drop table ', table_name, ';')
  from information_schema.tables;

Затем скопируйте этот скрипт и вставьте его в интерпретатор SQL.

Вы также можете фильтровать таблицы по их именам или базам данных:

select concat('drop table ', table_name, ';')
  from information_schema.tables
 where table_name like 'abc%'
   and table_schema = 'myDatabase'; --db name
0 голосов
/ 13 мая 2011

Представления information_schema полезны для перечисления и фильтрации таблиц в любой базе данных, совместимой с ANSI:

select *
  from information_schema.tables T
 where T.table_name like '%FILTER HERE%'

Вы можете проходить и удалять соответствующие таблицы, используя динамический SQL и курсор через вышеуказанный набор записей.

0 голосов
/ 13 мая 2011

согласен w / @ n8wrl, но при необходимости вы можете использовать оператор IF ... THEN http://dev.mysql.com/doc/refman/5.0/en/if-statement.html для DROP TABLE

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...