сценарий оболочки для усечения всех таблиц MySql - PullRequest
3 голосов
/ 20 января 2009

Я ищу сценарий оболочки Unix, который усекает все таблицы в схеме. Подобный вопрос уже задавался, но у меня есть некоторые дополнительные требования, которые не делают ни один из предоставленных ответов удовлетворительным:

  • Должен быть сценарием оболочки Unix (т.е. без python, perl, PHP)
  • Сценарий должен обрезать таблицы в порядке, учитывающем ограничения внешнего ключа
  • Я бы предпочел не использовать сохраненный процесс

Спасибо заранее, Дон

1 Ответ

6 голосов
/ 20 января 2009

Как насчет чего-нибудь нахального, как это:

mysqldump  --no-data mydb | mysql mydb

Получает дамп схемы и воспроизводит его в базе данных!

В качестве альтернативы, проверьте mk-find в Maatkit , вы должны быть в состоянии сделать что-то вроде этого:

mk-find -exec "truncate %s"

Описание mk-find:

Этот инструмент является аналогом MySQL для команда UNIX "найти". Принимает тесты (например, «найти все таблицы больше» чем 1 ГБ ») и выполняет действия, такие как как выполнение SQL («DROP TABLE% s»). С этим инструментом в вашем распоряжении вы может автоматизировать многие утомительные задачи, такие как измерение размера ваших столов и индексы и сохранение данных для исторический тренд, падающий старый скретч-таблицы и многое другое. это особенно полезно в периодических запланированные задачи, такие как задания cron.

...