2010-12-15 5 views
5

J'ai une base de données que j'ai sauvegardée. Maintenant, j'essaie de supprimer tout le contenu de la base de données originale et de le restaurer à son état vide. puisque c'est un db relationnel, il a des contraintes clés. Y a-t-il un outil que je pourrais utiliser pour cela?Vider un schéma de base de données relationnelle

+0

Je ne connais pas un outil qui peut faire cela mais il peut ne pas être nécessaire. L'astuce consiste à supprimer des tables dans le bon ordre. J'ai déjà dû le faire dans Oracle. Oracle a ses propres tables qui contiennent des informations sur toutes les relations entre les tables que j'ai créées. En interrogeant cette métabalise, j'ai pu obtenir le bon ordonnancement des relations afin de supprimer sans jamais toucher à une violation de contrainte de clé (je poste en commentaire car je ne sais pas si c'est possible en MySQL). L'autre option (et plus rapide) est de désactiver les contraintes, de tronquer, de réactiver les contraintes. – FrustratedWithFormsDesigner

Répondre

7

La méthode la plus simple consiste probablement à désactiver les vérifications de clé étrangère, puis à tronquer les tables. Étant donné que les clés étrangères sont désactivées, l'ordre dans lequel vous tronquez les tables n'a pas d'importance. Vous pouvez même utiliser le schéma information_schema pour générer les instructions de la table tronquée à votre place. Quelque chose comme ceci:

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'; 
+0

Merci pour l'aide. Résolu le problème. –

2

Vous pouvez supprimer ou désactiver temporairement toutes les contraintes, tronquer toutes les tables, puis restaurer les contraintes. J'ai pris cette approche pour SQL Server et cela fonctionne très bien.

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

Peut-être une approche serait encore mieux d'inverser le schéma dans les scripts (que vous mettez sous contrôle de version), puis recréez la base de données à partir de zéro.

+0

Merci. Je vais essayer ces solutions. –

+0

Merci, résolu le problème. –

Questions connexes