J'ai une base de données sur ma machine locale et je souhaite importer les données dans la base de données de mon hébergement. Les deux bases de données sont identiques, les mêmes table names
, column names
, etc.
Lorsque je export
la table de ma base de données locale via phpmyadmin
et import
via phpmyadmin sur mon hébergement, une erreur apparaît me disant qu'il y a des entrées en double pour la primary key
et arrête toute l'opération.
Comment puis-je importer les données via phpmyadmin, ignorer les entrées en double et afficher une liste des doublons à la fin du processus?
Une solution que je peux faire est d'appeler toutes les valeurs de la clé primaire dans la base de données sur mon hébergement et de filtrer les doublons avant l'importation. MAIS je me demande s'il y a une solution rapide pour cela avec phpmyadmin?
Dans phpMyAdmin, dans l'onglet Paramètres, vous pouvez essayer de vérifier les valeurs suivantes:
Si vous utilisez le format CSV:
Si vous utilisez le format SQL:
Il y a deux façons de faire ce que vous voulez:
La manière brutale:
TRUNCATE TABLE yourTbl; -- emtpies out the table
Ensuite, importez, mais vous risquez de perdre des données, alors créez peut-être une table de sauvegarde. Tout bien considéré, ne faites pas cela, vérifiez les alternatives énumérées ci-dessous:
Écrivez votre propre requête INSERT
, avec la clause IGNORE
:
INSERT IGNORE INTO yourTbl -- as shown in the linked duplicate
Mais, puisque vous importez un fichier, la requête sera très probablement un LOAD DATA [LOCAL] INFILE
. Comme vous pouvez le voir dans le manuel , vous pouvez aussi facilement ajouter un IGNORE
à cette requête:
LOAD DATA LOCAL INFILE '/path/to/files/filename1.csv' IGNORE -- IGNORE goes here
INTO TABLE your_db.your_tbl
FIELDS TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
(`field1`,`field2`);
C'est ça. Ne vous inquiétez pas si vous n'êtes pas trop à l'aise pour écrire vos propres requêtes comme ceci, il existe d'autres façons de faire ce que vous voulez faire:
La manière CLI:
mysqlimport -i dbname fileToImport
# Or
mysqlimport --ignore dbname fileToImport
CLI également, créez un fichier contenant le LOAD DATA
requête ci-dessus, puis:
$: mysql -u root -p
*********** #enter password
mysql> source /path/to/queryFile.sql
Cela vous oblige à avoir accès à la ligne de commande, et à exécuter cette commande Voici la page de manuel de MySQL
En utilisant phpMyAdmin, lors de l'importation, vous trouverez une case à cocher indiquant "Ignorer les doublons" , vérifiez cela et importez. Voici une page avec des captures d'écran
Vous pouvez également choisir de cocher "Ignorer les erreurs" , mais c'est une autre approche par force brute, et je ne le recommanderais pas.