Как очистить все таблицы базы данных
В этой статье мы покажем способы очистки и удаления таблиц базы данных MySQL. Это актуально в том случае, если у вас отсутствуют права доступа к базе данных для ее создания и удаления. Также на тот случай, если времени мало и нет времени искать и запоминать параметры базы, чтобы затем пересоздать её.
Способ 1. Умный
Возможно, самый лучший способ удалить или очистить таблицы БД. Для реализации запустите одну из команд в консоле сервера.
// для очистки всех таблиц от данных | |
mysql -Nse 'show tables' DB_NAME | while read table; do mysql -e "truncate table $table" DB_NAME; done | |
// для удаления всех таблиц | |
mysql -Nse 'show tables' DB_NAME | while read table; do mysql -e "drop table $table" DB_NAME; done |
Пример запуска команды в консоле:
Способ 2. Хитрый
Еще один хитрый способ для запуска в консоле сервера
// для очистки таблиц от данных | |
mysqldump -uUSERNAME -pPASSWORD --add-drop-table --no-data DB_NAME | grep ^DROP | sed -e 's/DROP TABLE IF EXISTS/TRUNCATE TABLE/g' | mysql -uUSERNAME -pPASSWORD DB_NAME | |
// для удаления таблиц БД | |
mysqldump -uLOGIN -pPASSWORD --add-drop-table --no-data DB_NAME | grep ^DROP | mysql -uLOGIN -pPASSWORD DB_NAME |
Если пароль или логин содержит спецсимволы, то обрамите их в одинарные кавычки.Пример запуска команды в консоле:
Способ 3. Пыховатый
Простой способ, который требует только наличия доступов в базу данных. Всего и нужно создать php-скрипт где-нибудь в публичке сайта и запустить его.
<? | |
$dbUser = 'userwm'; | |
$dbPass = 'test'; | |
$dbName = 'vw-test'; | |
$countTables = 0; | |
$mySqlConnetion = mysqli_connect("localhost", $dbPass, $dbUser); | |
mysqli_select_db($mySqlConnetion, $dbName); | |
$query = "SHOW TABLES"; | |
$result = mysqli_query($mySqlConnetion, $query); | |
while ($table = mysqli_fetch_array($result)) | |
{ | |
// замените DROP TABLE на TRUNCATE TABLE – если таблицы не нужно удалять | |
$query = "DROP TABLE `" . current($table) . "`"; | |
echo 'Drop table ' . $query . '<br>'; | |
mysqli_query($mySqlConnetion, $query); | |
$countTables++; | |
} | |
echo '<br>Count: ' . $countTables; |
Если вам необходимо очистить таблицы от записей, а не удалять их полностью – замените в коде DROP TABLE на TRUNCATE TABLE После запуска вы увидите какие таблицы были очищены и их количество.
Не забудьте удалить скрипт с сайта, после процедуры очистки
На моей практике перечисленные способы были актуальны при переносе интернет-магазина с тестовой среды на рабочую и в некоторых случаях восстановления сайта. Тогда мне нужно быстро почистить таблицы от лишних данных и развернуть резервную копию сайта.