1

Есть ли приложение, которое позволит мне сразу бросить несколько таблиц mysql? У меня есть база данных, в которой 363 таблицы. И большинство из них не нужны. Это займет слишком много времени, если я сделаю это в phpmyadmin, поскольку вы можете удалить только одну таблицу за раз + сообщение с подтверждением.

3 ответа3

4

Если ваш пользователь, с которым вы подключаетесь к базе данных, имеет "DROP TABLES", то вы можете сделать это с помощью запроса ...

DROP TABLE table1, table2, table3, etc, etc, etc;

Посмотрите, как Mysql удаляет несколько таблиц для хорошего описания того, как это сделать с помощью инструментов командной строки (если вы можете подключиться к серверу через SSH).

3

Для тех, кто находится в такой же ситуации, когда нужно отбросить тысячи таблиц, например, экземпляры WordPress, совместно использующие одну базу данных, это быстро выполнит свою работу, но будет крайне осторожно. Это не простит!

Запустите сначала с force = 0, чтобы показать, что будет отброшено в зависимости от фильтра grep, затем измените на 1, чтобы сделать:

#!/bin/bash
# drop tables matching filter
force=0;
u=root;
p=password;
db=dbname;
filter=users_;
for t in $(mysql -u $u -p$p -D $db -Bse 'show tables' | grep $filter); do
    echo Dropping $t;
    [[ $force -eq 1 ]] && mysql -u root -p$p -D $db -Bse "drop table \`$t\`"
done
2

Используйте командную строку mysql.

Если все таблицы, которые необходимо удалить, имеют общий префикс, например ("phpbb_", используйте эту команду:

SELECT CONCAT( 'DROP TABLE ', GROUP_CONCAT(table_name) , ';' ) 
    AS statement FROM information_schema.tables 
    WHERE table_name LIKE 'phpbb_%';

Это генерирует команду SQL, которую нужно выполнить, чтобы фактически избавиться от них.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .