Tag Archives: grep

DROP ALL TABLES в MySQL

Заголовок у этой заметки немного неправильный. В MySQL нет такой команды, а хотелось бы, чтоб она была. Иногда возникают задачи, в которых мы хотим удалить все таблицы из БД, но не ее саму (чтобы остались ее параметры, такие как права доступа, кодировки и т.п.). Решить такую проблему можно с помощью однострочника на shell:

mysqldump -u$DB_USER -p$DB_PASS --add-drop-table --no-data $DB_NAME | grep ^DROP | mysql -u$DB_USER -p$DB_PASS $DB_NAME

Первой командой конвейера мы создаем “дамп” базы данных, состоящий из всевозможных DROP TABLE, но без данных. Второй командой выбираем только строки, начинающиеся с DROP, и наконец последней, заливаем полученные команды в MySQL.