3 votes

LOAD DATA LOCAL INFILE cas particulier

J'ai un fichier CSV, qui contient quelque chose comme le suivant :

NEW YORK, NYC
LOS ANGELES, LA

Cependant, il existe un cas particulier qui est

WASHINGTON,DC, DC

Comme il y a deux virgules dans le cas de Washington, je ne peux pas charger le fichier dans la base de données correctement puisque la table n'a que deux colonnes. Je ne veux pas utiliser de code java pour vérifier que chaque ligne contient plus d'une virgule et modifier la ligne washington pour qu'elle soit "WASHINGTON, DC", DC.

Je me demande s'il existe un moyen de réécrire mon ancienne requête LOAD DATA pour gérer ce cas particulier ?

Résultat incorrect actuel :

+--------+--------------+
| value  | mapped_value |
+--------+--------------+
| NEW YORK      | NYC       |
| LOS ANGELES   | LAX       |
| WASHINGTON    | DC        |
+--------+--------------+

Le résultat attendu devrait ressembler à ceci :

+--------+--------------+
| value  | mapped_value |
+--------+--------------+
| NEW YORK      | NYC       |
| LOS ANGELES   | LAX       |
| WASHINGTON,DC | DC        |
+--------+--------------+

Requête de table :

CREATE TABLE city_map (value varchar(255) , mapped_value varchar(255));

Ma requête actuelle "LOAD DATA LOCAL INFILE" est la suivante :

LOAD DATA LOCAL INFILE '/tmp/city.csv' INTO TABLE city_map FIELDS\n TERMINATED BY ',';

1voto

Sylwit Points 1191

Votre CSV doit également comporter un délimiteur tel que le guillemet double " pour délimiter vos champs. Un séparateur n'est pas suffisant dans un CSV.

Si vous ouvrez votre CSV avec un éditeur de texte, vous devriez les voir, sinon votre CSV n'est pas valide car vous avez plus de virgules que nécessaire.

LOAD DATA LOCAL INFILE '/tmp/city.csv' INTO TABLE city_map FIELDS TERMINATED BY ',' ENCLOSED BY '"';

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X