Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 20/03/2018 14:35:16
- bruman
- Membre
Command COPY TO CSV
Bonjour à tous,
Nouveau sur ce forum, j'aurai besoin de vos lumières.
J'ai créer un batch pour faire un export CSV de PostgreSQL.
COPY (SELECT lpad(cast(code_barre as varchar(13)), 13, '0') as "Product_id", b.reference as "Reference", b.libelle as "Libelle", (b.qte_reelle-qte_en_reserve) as "Quantity", b.prix_vente as "Price", b.prix_vente as "Price2" from article b where suppr='N' and b.code_barre is not null and b.pvpromo is not null and b.qte_reelle-qte_en_reserve>0 and prix_vente>0 and libelle !='CHEQUE CADEAU' and pvpromo>0 order by "Quantity") TO 'C:/BRUMAN/ExtractArt_datejour.csv' DELIMITER ';' CSV;
Plusieurs soucis :
- le résultat de mon CSV contient plusieurs tabulations dans les champs
- mon CSV ne contient pas de ; en fin de chaque ligne
- dans le champ "Libelle", j'ai des retours charriots; donc mon CSV se décale de ligne dès qu'il en rencontre
Merci pour votre aide.
Bruce
Hors ligne
#2 20/03/2018 18:23:31
- gleu
- Administrateur
Re : Command COPY TO CSV
Si le fichier CSV contient des tabulations ou des retours chariots, c'est qu'ils font partie des champs texte. Dans ce cas, le contenu du champ est englobé avec des guillemets doubles. Si jamais cela gêne l'outil qui lit le fichier CSV, il faut que vous les remplaciez par un caractère qui ne dérangera pas votre outil. Enfin, le CSV ne contient pas de point virgule en fin de ligne parce c'est le symbole de délimitation entre deux champs, pas de fin de ligne.
Guillaume.
Hors ligne
#3 20/03/2018 18:34:53
- bruman
- Membre
Re : Command COPY TO CSV
Bonjour et merci pour votre réponse.
Pour les tabulations, il faut donc que je créé un batch pour les supprimer.
Pour le point virgule en fin de ligne, il n'existe pas une astuce/commande pour l'implémenter?
Merci.
Bruce
Hors ligne
#4 20/03/2018 19:04:57
- gleu
- Administrateur
Re : Command COPY TO CSV
Pour les tabulations, il est tout à fait possible que la requête SELECT les supprime en faisant appel à une fonction sur le champ qui les contient. Pour le point-virgule, non.
Guillaume.
Hors ligne
#5 20/03/2018 19:11:13
- bruman
- Membre
Re : Command COPY TO CSV
Avec la fonction trim par exemple ?
Hors ligne
#6 20/03/2018 23:03:08
- gleu
- Administrateur
Re : Command COPY TO CSV
Non. trim ne remplace que ce qui se trouve au début et/ou à la fin d'une chaîne, pas au milieu. Je pensais plutôt à replace ou regexp_replace.
Guillaume.
Hors ligne
#7 21/03/2018 18:49:52
- bruman
- Membre
Re : Command COPY TO CSV
Bonjour,
La fonction TRIM a fait le boulot.
Les tabulations étaient bien en fin de chaîne.
Ma requête fait bien le boulot
Merci pur ton aide.
Bruce
Hors ligne
Pages : 1