Comment déboguer un échec de la commande de copie Postgres

postgresql postgresql-8.4 sqlbulkcopy

Question

J'ai environ 75 000 enregistrements que je charge dans une table Postgres à l'aide de la commande de copie qui échoue. Je reçois une exception

ERREUR: séquence d'octets non valide pour le codage "UTF8": 0xbd

Maintenant, je dois trouver quelle ligne a cette entrée. Est-ce qu'il y a un moyen de faire ça? Je pense en particulier à l’activation d’une journalisation postgres qui pourrait aider ou de toute autre solution. Remarque: le problème ne concerne qu'un seul fichier. D'autres fichiers sont chargés sans problèmes

Réponse populaire

Il me semble toujours avoir un numéro de ligne dans mon erreur, que j'utilise COPY ou \copy et que je charge un fichier par redirection ou -f .

ERROR:  invalid byte sequence for encoding "UTF8": 0xa3
CONTEXT:  COPY z, line 3

S'il n'y a que quelques caractères incorrects et que vous voulez juste les supprimer, vous pouvez utiliser iconv (en supposant que vous soyez sur un système de type Unix).

iconv -c --from=utf8 --to=utf8 /tmp/badchars.txt > /tmp/stripped.txt

Vous pouvez toujours lancer diff contre les versions avant + après si vous voulez voir ce qui a été supprimé.



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi