2013-06-06 1 views
5

Je cherche un moyen de restaurer ma base de données à partir d'une sauvegarde antérieure. Toutefois, la sauvegarde ne doit pas simplement remplacer tous les enregistrements existants, mais ajouter uniquement la différence entre la base de données actuelle et le fichier de sauvegarde. Si aucun enregistrement "inexistant" n'est stocké dans la sauvegarde, rien ne devrait arriver. Les sauvegardes ont été faites avec mysqldump. Des indices? Merci d'avancemysql importer seulement les lignes manquantes

Répondre

5

Supprimez les instructions DROP TABLE et CREATE TABLE du fichier de vidage. Remplacez les instructions INSERT par INSERT IGNORE. Ensuite, chargez le fichier de sauvegarde et il ne doit pas mettre à jour les lignes en double.

+0

Merci, essayé cela, mais alors il cesse tout simplement de mettre à jour le DB – z3po

+0

Le schéma a-t-il changé depuis la sauvegarde? – Barmar

+0

Non, rien n'a changé. Je ai essayé avec des sauvegardes fraîchement faites ainsi – z3po

8

Voici une réponse moins manuelle:

mysqldump -t --insert-ignore --skip-opt -u USER -pPASSWORD -h 127.0.0.1 database > database.sql

Cette commande d'exportation avec les -t --insert-ignore --skip-opt options vous donnera un fichier de vidage SQL sans commandes DROP TABLE ou CREATE TABLE et chaque INSERT est maintenant un INSERT IGNORE.

BONUS:

Ce déchargera une seule table de la même manière:

mysqldump -t --insert-ignore --skip-opt -u USER -pPASSWORD -h 127.0.0.1 database table_name > table_name.sql

je besoin aujourd'hui et ne pouvait pas empêcher de le partager!

Questions connexes