Se você precisar armazenar dados UTF8 em seu banco de dados, precisará de um banco de dados que aceite UTF8. Você pode verificar a codificação do seu banco de dados no pgAdmin. Apenas clique com o botão direito do mouse no banco de dados e selecione "Propriedades".
Mas esse erro parece indicar que existem alguns dados UTF8 inválidos no seu arquivo de origem. Isso significa que o copy
utilitário detectou ou adivinhou que você está alimentando um arquivo UTF8.
Se você estiver executando sob alguma variante do Unix, poderá verificar a codificação (mais ou menos) com o file
utilitário.
$ file yourfilename
yourfilename: UTF-8 Unicode English text
(Acho que também funcionará em Macs no terminal.) Não tenho certeza de como fazer isso no Windows.
Se você usar esse mesmo utilitário em um arquivo proveniente de sistemas Windows (ou seja, um arquivo não codificado em UTF8), provavelmente mostrará algo assim:
$ file yourfilename
yourfilename: ASCII text, with CRLF line terminators
Se as coisas ficarem estranhas, você pode tentar converter seus dados de entrada em uma codificação conhecida, alterar a codificação do cliente ou ambas. (Estamos realmente ampliando os limites do meu conhecimento sobre codificações.)
Você pode usar o iconv
utilitário para alterar a codificação dos dados de entrada.
iconv -f original_charset -t utf-8 originalfile > newfile
Você pode alterar a codificação psql (o cliente) seguindo as instruções no Suporte ao conjunto de caracteres . Nessa página, procure a frase "Para habilitar a conversão automática de conjunto de caracteres".