Очистить схему реляционной базы данных

У меня есть база данных, которую я зарезервировал. Теперь я пытаюсь удалить весь контент из оригинальной БД и восстановить его в пустое состояние. так как это реляционная БД, она имеет ключевые ограничения. Есть ли какой-нибудь инструмент, который я мог бы использовать для этого?

2 ответа

Решение

Самый простой способ сделать это, вероятно, отключить проверку внешнего ключа, а затем обрезать таблицы. Поскольку внешние ключи отключены, порядок усечения таблиц не имеет значения.

set foreign_key_checks = 0;
truncate table parent;
truncate table child;
truncate table ...

Вы даже можете использовать information_schema для создания операторов усеченной таблицы для вас. Что-то вроде этого:

select concat('truncate table ',table_schema,'.',table_name,';') as sql_stmt
from information_schema.tables
where table_schema = 'your_schema_name'
and table_type = 'base table';

Вы можете временно удалить или отключить все ограничения, обрезать все таблицы и затем восстановить ограничения. Я взял этот подход для SQL Server, и он работает нормально.

http://lists.mysql.com/mysql/194954

Возможно, еще лучшим подходом будет преобразование схемы в сценарии (которые вы помещаете под контроль версий), а затем воссоздание базы данных с нуля.

Другие вопросы по тегам