PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 20/08/2021 16:12:56

tom_ARD
Membre

Import de données avec des retours chariots depuis fichier CSV

Bonjour à tous,

J'ai un souci d'import de données que je n'arrive pas à résoudre, et sollicite donc votre aide...
J'utilise un script simple pour créer mes tables de données :
--------------------------
create table courrier_dl2021
(

"delegue"       varchar(25),
"adresse"       varchar(25),
"commune"       varchar(25),
"Commune_DL"       varchar(25),
"portableDL"       varchar(25),
"Mail_DL"       varchar(25),
"carton"       varchar(250),
"colis"       varchar(250),
"cheptel"       varchar(205),
"nom"       varchar(250),
"num_boite"       varchar(250),
"nb_numero"       varchar(250),
"PremNum"       varchar(250),
"DerNum"       varchar(250)

) ;

COPY courrier_dl2021 FROM 'C:/B8/Synthese_commande_DL.csv' WITH DELIMITER ';' NULL ''   ;
----------------
En général, pas trop de souci, sauf que dans le cas présent, les données de mon fichier CSV (préparé depuis excel) sont parfois sur plusieurs lignes. Par exemple :
9L28095903075;20
20
20
10;250007128302347
250007128302367
250007128302387
250007128302407
;250007128302366
250007128302386
250007128302406
250007128302416

J'obtiens donc des erreurs ERREUR:  données manquantes pour la colonne « commune »
CONTEXT:  COPY courrier_dl2021, ligne 2 : « ;250007129712380 »

J'ai essayé plusieurs options pour préparer mon fichier csv (ou txt) sans succès...
Auriez-vous une idée sur la bonne manière de faire ??

La solution est-elle a chercher du côté de mon jeu de données ou bien est-il possible de faire quelque chose côté script sous pgadmin ??

Merci par avance

Hors ligne

#2 20/08/2021 16:24:12

dverite
Membre

Re : Import de données avec des retours chariots depuis fichier CSV

Le format CSV autorise les sauts de ligne à l'intérieur des champs, mais il faut que le champ soit encadré par des guillemets. L'analyseur CSV sait que le champ continue sur la ligne suivante parce que le guillemet ouvrant en début de champ n'est pas fermé.

Postgres gère ça bien, et normalement Excel aussi. Mais ça ne correspond pas à l'exemple montré dans la question, il n'y a aucun guillemet.

Hors ligne

#3 20/08/2021 17:02:35

tom_ARD
Membre

Re : Import de données avec des retours chariots depuis fichier CSV

Merci beaucoup pour votre réponse rapide. Effectivement je me souvenais pourtant d'avoir réussi un import de ce type au préalable...
Je suis passé par Libreoffice pour imposer l'encadrement de chaque champ par des guillemets (pas trouvé sur Excel...).
Mon fichier CSV est désormais ainsi :
----------------------
"GOxxxxxxxxxxxxxxxxxxrd";"Au Bourg";71170;"ANGLURE SOUS DUN";"06.48xxxx.06";"xxxxxn@hotmail.fr";" 00002";;"9L28095903051";"FRxxxx12";"M. VIVxxxxxSTE";"1/1";"13";"250007128262421
.";"250007128262433
."
"Bxxxxxxxxxxre";"Le Petit Bois";71400;"AUTUN";"#N/D";"#N/D";" 00003";;"9L28095903068";"FR71xxx43";"M. LxxxxER";"1/3
2/3
3/3";"20
20
12";"250007128292512
250007128292532
250007128292552
.";"250007128292531
250007128292551
250007128292563
."
---------------------
J'obtiens encore une erreur :
ERREUR:  données manquantes pour la colonne « commune »
CONTEXT:  COPY courrier_dl2021, ligne 2 : « .";"250007129712380 »

Je ne comprends pas vraiment puisque les champs sont bien encadrés par des guillemets...
Faut-il le spécifier dans le script d'import ?

Hors ligne

#4 20/08/2021 17:54:59

tom_ARD
Membre

Re : Import de données avec des retours chariots depuis fichier CSV

En passant par l'outil d'import de pgadmin, j'ai réussi à importer mes données.

Je ne comprends pas ce que j'aurais du préciser dans mon script, mais le principal objectif est atteint !!

Merci encore.

Hors ligne

Pied de page des forums