Come eseguire il debug del comando di copia Postgres fallito

postgresql postgresql-8.4 sqlbulkcopy

Domanda

Ho circa 75k record che sto caricando su una tabella Postgres usando il comando copy che sta fallendo. Ottengo un'eccezione

ERRORE: sequenza di byte non valida per la codifica "UTF8": 0xbd

Ora ho bisogno di trovare quale linea ha questa voce. C'è un modo per fare questo? Sto pensando di abilitare la registrazione di postgres che potrebbe aiutare o qualsiasi altra soluzione. Nota: sto riscontrando il problema con un solo file particolare. Altri file vengono caricati senza problemi

Risposta popolare

Mi sembra sempre di ottenere un numero di riga nel mio errore, non importa se utilizzo COPY o \copy e feed un file tramite reindirizzamento o -f .

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

Se ci sono solo un paio di caratteri errati e vuoi solo spogliarli puoi usare iconv (ammesso che tu sia su un sistema unix-like).

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

Puoi sempre eseguire diff contro la versione precedente + successiva se vuoi vedere cosa è stato rimosso.



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow