Postgresql pb d'import fichier CSV avec la commande COPY [RESOLU] - SQL/NoSQL - Programmation
Marsh Posté le 26-10-2014 à 16:35:56
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.
Marsh Posté le 27-10-2014 à 11:09:34
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.
Marsh Posté le 27-10-2014 à 11:20:28
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.
Marsh Posté le 27-10-2014 à 11:33:12
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.
Marsh Posté le 29-10-2014 à 11:14:07
Eh bien ça passe !! Merci beaucoup c'est parfait.
Marsh Posté le 24-10-2014 à 15:41:34
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 :
et pour d'autres celle-ci :
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/