J'essaie de copier le contenu d'un fichier CSV dans ma base de données postgresql et j'obtiens cette erreur "données supplémentaires après la dernière colonne attendue".
Le contenu de mon CSV est
agency_id,agency_name,agency_url,agency_timezone,agency_lang,agency_phone
100,RATP (100),http://www.ratp.fr/,CET,,
et ma commande postgresql est
COPY agency (agency_name, agency_url, agency_timezone) FROM 'myFile.txt' CSV HEADER DELIMITER ',';
Voici ma table
CREATE TABLE agency (
agency_id character varying,
agency_name character varying NOT NULL,
agency_url character varying NOT NULL,
agency_timezone character varying NOT NULL,
agency_lang character varying,
agency_phone character varying,
agency_fare_url character varying
);
Column | Type | Modifiers
-----------------+-------------------+-----------
agency_id | character varying |
agency_name | character varying | not null
agency_url | character varying | not null
agency_timezone | character varying | not null
agency_lang | character varying |
agency_phone | character varying |
agency_fare_url | character varying |
Maintenant vous avez 7 champs.
Vous devez mapper ces 6 champs du CSV en 6 champs dans la table.
Vous ne pouvez pas mapper que 3 champs à partir de CSV lorsque vous l'avez 6 comme vous le faites dans:
\COPY agency (agency_name, agency_url, agency_timezone) FROM 'myFile.txt' CSV HEADER DELIMITER ',';
Tous les champs du fichier csv doivent être mappés dans la commande copy from.
Et puisque vous avez défini csv ,
_ délimiteur est la valeur par défaut, vous n'avez pas besoin de le mettre.
Je ne suis pas sûr que cela compte comme une réponse, mais je viens de taper cela avec un tas de fichiers CSV et de constater que le simple fait de les ouvrir dans Excel et de les ré-enregistrer sans modifications a fait disparaître l'erreur. IOTW il est possible que le fichier source contienne un formatage incorrect qu’Excel est capable de nettoyer automatiquement.