Suppression de doublon sur une colonne, à partir d'un CSV ou directement dans des tables sql
Bonjour,
J'ai regardé sur le forum, c'est une problématique qui revient apparemment régulièrement, mais je n'ai pas trouvé la réponse qui correspond à mon besoin.
J'ai un table nommée sources, une seule colonne nommée mots, type VARCAR
Je dois créer une liste de mot à partir, soit de fichier csv que j'ai en ma possession, et je dédoublonne directement lors de l'import, soit j'importe les fichiers csv et je dédoublonne après.
J'y ai passé l'après midi et rien à faire, rien ne fonctionne :
Importer en supprimant les doublons lors de l’import d’une table avec une seule colonne :
Code:
1 2 3 4 5 6 7 8
| INSERT INTO liste_mots_source (mots)
SELECT mots
FROM liste_mots_dico01
WHERE NOT EXISTS (
SELECT 1
FROM liste_mots_source
WHERE liste_mots_source.mots = liste_mots_dico01.mots
); |
SUPPRIMER LES DOUBLONS D’UNE TABLE EXISTANTE SUR UNE COLONNE
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| CREATE TABLE temp_table AS
SELECT mots, MIN(mots) AS min_id
FROM liste_mots_source
GROUP BY mots
HAVING COUNT(*) > 1;
DELETE FROM liste_mots_source
WHERE mots IN (
SELECT mots
FROM temp_table
);
DROP TABLE temp_table; |
IMPORT D'UN FICHIER CSV ET DEDOUBLONAGE A LA VOLE
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
-- Création de la table temporaire
CREATE TEMPORARY TABLE temp_sources (
mots VARCHAR(255)
);
-- Import des données du fichier CSV dans la table temporaire
LOAD DATA INFILE '/chemin/vers/le/fichier.csv'
INTO TABLE temp_sources
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;
-- Insertion des enregistrements non dupliqués de la table temporaire dans la table "sources"
INSERT IGNORE INTO sources (mots)
SELECT mots FROM temp_sources;
-- Suppression de la table temporaire
DROP TABLE temp_sources; |
Voilà, cela decrait être simple en théorie, mais rien y fait, j'ai toujours des doublons, ou je n'ai plus du tout de valeur, par exemple, si le mot abandon apparait 3 fois, les trois occurences sont supprimées.
J'utilise phpMyadmin, je n'ai pas accès à un serveur, du coup, c'est pas top non plus.
Si quelqu'un peut m'aider, cela serai sympa.
Patrice