Je souhaite fusionner des données d'une base de données à une autre. Je crée donc un vidage avec mysqldump
puis l'importe dans une autre base de données (avec la même structure de tables). Je n'ai aucun problème (comme des entrées en double ou autre) dans ce cas.
Mais je fais quelques fusions à des fins de test et je ferai la fusion finale plus tard. Donc, je veux exécuter la fusion (les données peuvent être modifiées) plusieurs fois. Remarquez que mes lignes dans mes tableaux ne sont jamais supprimées, seules peuvent être insérées ou mises à jour.
Puis-je créer mysqldump avec l'option ON DUPLICATE? Ou peut-être puis-je fusionner un vidage qui insère de nouvelles données et mettre à jour des données modifiées?
Bien sûr, je peux insérer ON DUPLICATE
dans le vidage manuellement, mais je veux automatiser le processus de fusion.
--replace
équivaut à faireON DUPLICATE UPDATE
sur chaque colonne. Malheureusement, mysqldump n'est pas conçu pour mettre à jour des colonnes spécifiques en raison de la nature du chargement et du vidage en masse de mysqldump. Ma réponse révèle simplement ce que mysqldump est capable de faire. Vous devriez écrire du code personnalisé, à part mysqldump, pour le faireON DUPLICATE UPDATE
.REPLACE INTO
peut échouer car l'enregistrement ne peut pas être supprimé sans rompre ces relations. Si c'est le casON DELETE CASCADE
, vous viderez les tables qui dépendent de celle qui est mise à jour.REPLACE INTO
est une opération assez dangereuse.REPLACE INTO
) peuvent être dangereuses et avoir des effets "surprenants". Bonne réponse - je voulais juste ajouter une mise en garde.