web-dev-qa-db-fra.com

mysqldump avec INSERT ... ON DUPLICATE

Je souhaite fusionner des données d'une base de données à une autre. Je crée donc un vidage avec mysqldump puis je 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.

22
Xupypr MV

Il existe des options pour vous aider:

  --insert-ignore     Insert rows with INSERT IGNORE.
  --replace           Use REPLACE INTO instead of INSERT INTO.
  -t, --no-create-info
                      Don't write table creation info.

Gardez ce paradigme à l'esprit

  • mysqldump tout de DB1 dans DUMP1
  • charger DUMP1 dans DB3
  • mysqldump tout de DB2 en utilisant --replace (ou --insert-ignore) et --no-create-info dans DUMP2
  • charger DUMP2 dans DB3
37
RolandoMySQLDBA