Nuestro equipo de trabajo ha pasado horas investigando para darle solución a tu duda, te compartimos la solución y nuestro deseo es servirte de gran ayuda.
Solución:
El problema es ese 0x9D
no es un valor de byte válido en WIN1252. Hay una tabla aquí: https://en.wikipedia.org/wiki/Windows-1252
El problema puede ser que esté importando un archivo UTF-8 y postgresql esté predeterminado en Windows-1252 (que creo que es el predeterminado en muchos sistemas de Windows).
Debe cambiar el conjunto de caracteres en la línea de comandos de Windows antes de ejecutar el script con chcp. O en postgresql puedes:
SET CLIENT_ENCODING TO 'utf8';
Antes de importar el archivo.
Simplemente especifique encoding 'UTF-8'
como la codificación en el copy
comando, por ejemplo (lo dividí en dos líneas para facilitar la lectura, pero lo mantengo todo en la misma línea):
copy dest_table from 'C:/src-data.csv'
(format csv, header true, delimiter ',', encoding 'UTF8');
Más detalles:
El problema es que la codificación del cliente está configurada para WIN1252
muy probablemente porque se está ejecutando en una máquina con Windows pero el archivo tiene una UTF-8
personaje en ella.
Puede verificar la codificación del cliente con
SHOW client_encoding;
client_encoding
-----------------
WIN1252