9
votes

Comment puis-je jeter un fichier MySQL sans clés étrangères via une ligne de commande?

J'ai besoin d'exporter une grande base de données sans clés étrangères. Quelle est la commande pour faire cela?

C'est ce que j'ai essayé mais je sais que c'est incorrect. xxx


2 commentaires

Dupliqué possible de Pouvez-vous automatiquement Créer un fichier mysqLDump qui n'applique pas les contraintes de clé étrangère?


C'est une question très différente, sans inclure les clés étant différentes de désactiver les chèques sur les touches.


3 Réponses :


9
votes

à partir de ce thread:

Pouvez-vous automatiquement Créez un fichier mysqldump qui n'applique pas les contraintes de clé étrangère?

La commande mysqldump incluse avec MySQL 5.0.51 (et selon les versions du journal des modifications depuis 4.1.1) désactive les chèques de clé étrangère. Par défaut, MySqldump comprend la ligne suivante en haut du fichier de vidage:

/ *! 40014 set @old_forign_key_checks = @@ étrangers_key_checks, étrangers_key_checks = 0 * /;

Le / *! 40014 ... * / Syntaxe est un commentaire conditionnel qui sera exécuté sur MySQL 4.0.14 et plus tard. L'ancien réglage des chèques de clé étrangère est restauré à la fin du fichier de vidage:

/ *! 40014 set étrangers_key_checks = @ OLD_FORIGN_KEY_CHECKS * /;


2 commentaires

Mais est-ce la réponse à la question? Cela exporte toutes les clés étrangères, veille simplement à ne pas être appliquée pendant l'importation.


Cela ne ressemble pas à une réponse à moi. La question était de disposer d'une décharge sans contraintes FK et de ne pas le désactiver temporairement. Le fichier de vidage contiendrait toujours des contraintes FK.



10
votes

Vous pouvez utiliser le drapeau - init-commande sur une base de session: xxx


1 commentaires

C'est la solution la plus simple et la plus propre. Cela fonctionne également pour la tuyauterie mysqldump dans mysql .



10
votes

C'est laid, mais j'ai fini simplement à modifier le fichier de schéma pour supprimer les touches étrangères.


Schema de vidage uniquement, pas de clés étrangères xxx

SED trouve des lignes qui précèdent les déclarations de contrainte de clé étrangère et remplace ces lignes avec elles-mêmes, moins la virgule de fuite. grep exclut les contraintes de clé étrangère.

Données de députage uniquement, aucune création de table xxx

schéma de charge d'abord, puis les données < / h3> xxx

testé avec MySqldump Ver 10.13 Distribuez 5.6.32-78.1, pour Linux (x86_64).


0 commentaires