Есть ли приложение, которое позволит мне сразу бросить несколько таблиц mysql? У меня есть база данных, в которой 363 таблицы. И большинство из них не нужны. Это займет слишком много времени, если я сделаю это в phpmyadmin, поскольку вы можете удалить только одну таблицу за раз + сообщение с подтверждением.
3 ответа
Если ваш пользователь, с которым вы подключаетесь к базе данных, имеет "DROP TABLES", то вы можете сделать это с помощью запроса ...
DROP TABLE table1, table2, table3, etc, etc, etc;
Посмотрите, как Mysql удаляет несколько таблиц для хорошего описания того, как это сделать с помощью инструментов командной строки (если вы можете подключиться к серверу через SSH).
Для тех, кто находится в такой же ситуации, когда нужно отбросить тысячи таблиц, например, экземпляры 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
Используйте командную строку mysql.
Если все таблицы, которые необходимо удалить, имеют общий префикс, например ("phpbb_", используйте эту команду:
SELECT CONCAT( 'DROP TABLE ', GROUP_CONCAT(table_name) , ';' )
AS statement FROM information_schema.tables
WHERE table_name LIKE 'phpbb_%';
Это генерирует команду SQL, которую нужно выполнить, чтобы фактически избавиться от них.