lunes, 1 de febrero de 2021

Postgres: Importación de un fichero en una tabla. Solucuionar el error "invalid byte sequence for encoding "UTF8": 0xd1 0x41"

 Se va seguir lo expuesto en stackoverflow


Problema:

1. Se ha generado un fichero "txt" desde windows, llamado "file01.txt"

2. Se ha creado una tabla XIMO01 con un único campo c1 varchar de longitud 1000

3. Dentro de PgAdmin ejecutamos

COPY miesquema."XIMO01" (c1) FROM '/home/ximo/file01.txt'

y contesta

ERROR: invalid byte sequence for encoding "UTF8": 0xd1 0x41 CONTEXT: COPY EDU01, line 12 SQL state: 22021

Solución:

1. Pasamos el fichero con final de línea CRLF a LF :

 dos2unix -b file01.txt

2. Miramos que codificación tiene tiene el fichero

file file01.txt

y nos devuelve 

file01.txt: ISO-8859 text, with very long lines

hacemos la conversion a UTF-8 (ojo: el formato que acepta es ISO-8859-15 y no ISO-8859 !!!!)

iconv -f ISO-8859-15 -t UTF-8 < file01.txt > output01.txt

y ahora hacemos

COPY miesquema."XIMO01" (c1) FROM '/home/ximo/output01.txt'

y ya lo carga