Я хочу легко удалить несколько таблиц без фактического перечисления имен таблиц в запросе на отбрасывание, а таблицы, которые нужно удалить, имеют префикс: 'wp _'
MySQL: как удалить несколько таблиц с помощью одного запроса?
Ответ 1
Просто поделитесь одним из решений:
mysql > SELECT CONCAT ( "DROP TABLE",
GROUP_CONCAT (TABLE_NAME) ) AS stmtFROM information_schema.TABLES
WHERE TABLE_SCHEMA = "your_db_name" И TABLE_NAME LIKE "ur условие" в outfile"/tmp/a.txt ';
mysql > source/tmp/a.txt;
Ответ 2
Я использовал запрос, очень похожий на Angelin's. Если у вас больше нескольких таблиц, нужно увеличить максимальную длину group_concat
. В противном случае запрос будет barf на усеченной строке, возвращаемой 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;
Ответ 3
Простое решение без риска ошибки:
mysqldump
создать файл, содержащий команду DROP
, например
DROP TABLE IF EXISTS `wp_matable`;
a 'grep
' с "DROP TABLE wp_
" дают команды для выполнения
поэтому drop создается с помощью тезисов trhee lines (вы можете отредактировать drop.sql, чтобы проверить, какие таблицы будут отброшены раньше)
mysqldump -u user -p database > dump.sql
grep "DROP TABLE `wp_" dump.sql > drop.sql
mysql -u user -p database < drop.sql
Ответ 4
Будьте осторожны с "_", нужно записать с "\" раньше в 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**%';
Ответ 5
Для большого решения 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
Вы избавляетесь от обратных ссылок в именах таблиц. Компонент grep не будет работать в некоторых средах с обратными окнами.
Ответ 6
Удаление одной таблицы в mysql:
ТАБЛИЦА DROP TABLE_NAME;
Ответ 7
Перейдите в папку c:\xampp\mysql\data\your folder
Выберите несколько таблиц, которые вы хотите удалить, а затем нажмите кнопку удаления
Спасибо