Vous n'êtes pas identifié(e).
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
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.
@DanielVerite
http://blog-postgresql.verite.pro/
Hors ligne
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
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