MySQL: как удалить несколько таблиц с помощью одного запроса?
Я хочу легко удалить несколько таблиц, не перечисляя имена таблиц в запросе на удаление, а удаляемые таблицы имеют префикс "wp_"
7 ответов
я использовал запрос, очень похожий на Angelin. Если у вас больше нескольких таблиц, необходимо увеличить максимальную длину group_concat
. В противном случае запрос будет блевать на усеченную строку group_concat
возвращает.
- Это мои 10 копеек:
-- Increase memory to avoid truncating string, adjust according to your needs
SET group_concat_max_len = 1024 * 1024 * 10;
-- Generate drop command and assign to variable
SELECT CONCAT('DROP TABLE ',GROUP_CONCAT(CONCAT(table_schema,'.',table_name)),';') INTO @dropcmd FROM information_schema.tables WHERE table_schema='databasename' AND table_name LIKE 'my_table%';
-- Drop tables
PREPARE str FROM @dropcmd; EXECUTE str; DEALLOCATE PREPARE str;
просто поделиться одним из решений:
mysql> выберите CONCAT( "DROP TABLE",
GROUP_CONCAT(ИМЯ ТАБЛИЦЫ) ) В качестве инструкциииз базы данных information_schema.Таблицы
где TABLE_SCHEMA = "your_db_name" и TABLE_NAME как " ur состояние" в outfile '/tmp/a.txt';
mysql> источник /tmp/a.txt;
простое решение без риска ошибки:
mysqldump
создайте файл, содержащий как
DROP TABLE IF EXISTS `wp_matable`;
a'grep
' С "DROP TABLE wp_
" дайте нам команды для выполнения
так что падение производится тезисы trhee линий (вы можете изменить.sql, чтобы проверить, какие таблицы будут удалены раньше)
mysqldump -u user -p database > dump.sql
grep "DROP TABLE `wp_" dump.sql > drop.sql
mysql -u user -p database < drop.sql
будьте осторожны с"_", Нужно писать с " \ " Раньше в Mysql, как:
SELECT CONCAT('DROP TABLE',GROUP_CONCAT(CONCAT(table_schema,'.',table_name)),';') INTO @dropcmd FROM information_schema.tables WHERE table_schema='databasename' AND table_name LIKE '**my\_table**%';
для великого решения mysqldump лучше использовать опцию --skip-quote-names
mysqldump --skip-quote-names -u user -p database > dump.sql
grep "DROP TABLE wp_" dump.sql > drop.sql
mysql -u user -p database < drop.sql
вы избавляетесь от backticks в именах таблиц. Часть grep не будет работать в некоторых средах с backticks.
перейти к c:\xampp\mysql\data\your папка
выбрать несколько таблиц, которые вы хотите удалить, а затем нажмите кнопку Удалить
спасибо