Очистить схему реляционной базы данных - PullRequest
5 голосов
/ 15 декабря 2010

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

Ответы [ 2 ]

7 голосов
/ 15 декабря 2010

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

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';
2 голосов
/ 15 декабря 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...