Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2372 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [RESOLU] Postgresql pb d'import fichier CSV avec la commande COPY

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU] Postgresql pb d'import fichier CSV avec la commande COPY

n°2241090
KibitO
Posté le 24-10-2014 à 15:41:34  profilanswer
 

Bonjour à tous,
 
Je n'arrive pas à importer en masse des fichiers CSV via un programme PHP dans Postgresql avec la commande COPY FROM.
 
Mon programme s'arrête sur la levée d'une exception lorsque, à l'intérieur du fichier, j'ai soit des ' soit des ".
 
Pour certains fichiers CSV la commande c'est cette commande qui passe :
 

Code :
  1. COPY \"MA_TABLE\" (\"MON_CHAMP_1\",\"MON_CHAMP_1\" ) FROM '" . $filename . "' DELIMITER '|' ENCODING 'UTF-8' QUOTE '''' ESCAPE '\"' CSV HEADER;";


et pour d'autres celle-ci :
 

Code :
  1. COPY \"MA_TABLE\" (\"MON_CHAMP_1\",\"MON_CHAMP_1\" ) FROM '" . $filename . "' DELIMITER '|' ENCODING 'UTF-8' QUOTE '\"' ESCAPE '''' CSV HEADER;";


 
Voici un exemple d'une ligne qui ne passe pas dans un import :
 


20140429112708|d140-2 1/2" d56


 
Je ne sais pas comment faire.. Si je ne précise pas le séparateur de champ, les guillemets et le caractère d'échappement, ça plante.
 
Avez-vous une idée de la solution à adopter ? Merci par avance.
 
KibitO


Message édité par KibitO le 29-10-2014 à 11:15:22

---------------
Je suis le créateur du groupe Facebook "Tout sur la copropriété" : https://www.facebook.com/groups/coproprietaires/
mood
Publicité
Posté le 24-10-2014 à 15:41:34  profilanswer
 

n°2241205
masklinn
í dag viðrar vel til loftárása
Posté le 26-10-2014 à 16:35:56  profilanswer
 

Tes champs sont pas quotés, et apparemment contiennent des quotes, donc postgres se vautre, logique. Tu peux pas désactiver le quoting, donc je suggère de spécifier un caractère qui n'apparait pas dans le fichier, idéalement non imprimable, genre E'\0' (NUL) ou E'\b' (backslash).

 

IIRC par défaut ESCAPE prend la même valeur que QUOTE, donc juste spécifier QUOTE devrait fonctionner. À vérifier.


Message édité par masklinn le 26-10-2014 à 16:36:57

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°2241278
KibitO
Posté le 27-10-2014 à 11:09:34  profilanswer
 

Salut et merci de m'avoir répondu. Je ne comprends pas ce que je dois faire avec ta solution. Je dois spécifier E'\0' à la place de '''' au niveau de QUOTE ?
 
Sinon j'avais pensé à tester le COPY TO avec une ligne contenant des quotes pour savoir comment il les échappait dans le fichier CSV de destination et réimporter ce même fichier avec un COPY FROM.


---------------
Je suis le créateur du groupe Facebook "Tout sur la copropriété" : https://www.facebook.com/groups/coproprietaires/
n°2241281
masklinn
í dag viðrar vel til loftárása
Posté le 27-10-2014 à 11:20:28  profilanswer
 

KibitO a écrit :

Salut et merci de m'avoir répondu. Je ne comprends pas ce que je dois faire avec ta solution. Je dois spécifier E'\0' à la place de '''' au niveau de QUOTE ?


Ouaip. C'est in caractère qui n'est pas présent dans le fichier donc il va simplement ne rien quoter.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°2241284
KibitO
Posté le 27-10-2014 à 11:33:12  profilanswer
 

:bounce: Putain un grand merci c'est passé ! J'ai juste spécifié QUOTE E'\b' et ça passe. E'\0' me générait une erreur.
 
Je vais quand même vérifier si mes 94 fichiers passent avec cette requête.


---------------
Je suis le créateur du groupe Facebook "Tout sur la copropriété" : https://www.facebook.com/groups/coproprietaires/
n°2241635
KibitO
Posté le 29-10-2014 à 11:14:07  profilanswer
 

Eh bien ça passe !! Merci beaucoup c'est parfait.


---------------
Je suis le créateur du groupe Facebook "Tout sur la copropriété" : https://www.facebook.com/groups/coproprietaires/

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [RESOLU] Postgresql pb d'import fichier CSV avec la commande COPY

 

Sujets relatifs
problème application sms en vb.net[c#]DataGridView et fichier Txt
SSH2_shell() pour commande suProblème Ressource/Config/Log4j pas pris en compte
Problème code C++ débutant watershedFichier bat : commande lorsque fermeture
Problème d'envoi mail en PHP avec easyphp 13.1Probleme encodage JEE/ eclipse / formulaire JSP
[RÉSOLU] Problème fenêtre modale et notifications 
Plus de sujets relatifs à : [RESOLU] Postgresql pb d'import fichier CSV avec la commande COPY


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR