Si necesita almacenar datos UTF8 en su base de datos, necesita una base de datos que acepte UTF8. Puede verificar la codificación de su base de datos en pgAdmin. Simplemente haga clic derecho en la base de datos y seleccione "Propiedades".
Pero ese error parece indicarle que hay algunos datos UTF8 no válidos en su archivo fuente. Eso significa que la copy
utilidad ha detectado o adivinado que le está proporcionando un archivo UTF8.
Si está ejecutando alguna variante de Unix, puede verificar la codificación (más o menos) con la file
utilidad.
$ file yourfilename
yourfilename: UTF-8 Unicode English text
(Creo que eso también funcionará en Mac en la terminal). No estoy seguro de cómo hacerlo en Windows.
Si usa esa misma utilidad en un archivo que proviene de sistemas Windows (es decir, un archivo que no está codificado en UTF8), probablemente mostrará algo como esto:
$ file yourfilename
yourfilename: ASCII text, with CRLF line terminators
Si las cosas siguen siendo extrañas, puede intentar convertir sus datos de entrada a una codificación conocida, cambiar la codificación de su cliente, o ambos. (Realmente estamos ampliando los límites de mi conocimiento sobre codificaciones).
Puede usar la iconv
utilidad para cambiar la codificación de los datos de entrada.
iconv -f original_charset -t utf-8 originalfile > newfile
Puede cambiar la codificación psql (el cliente) siguiendo las instrucciones del Soporte de juego de caracteres . En esa página, busque la frase "Para habilitar la conversión automática de juegos de caracteres".