J'ai fait un vidage en utilisant mysqldump ..
mysqldump -u... -p... mydb t1 > mydb_table.sql
Ensuite, j'ai importé le vidage dans une autre base de données ayant la même table, mais des enregistrements différents ..
mysql -u...-p... mydb < mydb_tables.sql
La base de données importatrice avait des enregistrements de clé_principale 1 à 1 000 et la base de données exportatrice en avait 5 000 à 10 000.
Mais lors de l'importation, les enregistrements existants, c'est-à-dire 1 à 1 000, ont été supprimés.
Comment ?? Pourquoi ?? Si c'est un comportement par défaut, quelles options je peux donner au vidage pour ne pas le laisser se produire la prochaine fois ..
Le mysqldump, par défaut, supprimera la table. Vous devez spécifier le --no-create-info
option comme celle-ci:
mysqldump -u... -p... --no-create-info --skip-extended-insert mydb t1 > mydb_table.sql
De cette façon, vous n'avez que des encarts à traiter. En utilisant --skip-extended-insert
insérera une ligne à la fois. Cela permet de traiter les problèmes en double, mais vous aurez l'importation comme ceci:
mysql -u...-p... --force mydb < mydb_tables.sql
Le --force
L'option a pour seul but de continuer les INSERTS dans le cas où une clé en double est rencontrée. Dans ce cas, l'erreur INSERT incriminée est ignorée et transmise au INSERT suivant.