Rodrigo Hjort wrote:
> Precisei fazer a carga de alguns arquivos .CSV codificados com Unicode
> para o PostgreSQL num banco em LATIN1.
> 
> Tratavam-se de palavras provenientes de dicionários em diversos idiomas,
> como francês e alemão, que possuem caracteres que não podem ser
> convertidos.
> 
> Tentei duas abordagens:
> 1. criar o banco em UTF-8, fazer a carga normalmente e depois usar
> funções como CONVERT() e TO_ASCII() para tirar a acentuação das palavras
> - dava erro!
> 2. converter o arquivo externamente, usando o "iconv", para depois dar a
> carga normalmente - conversão não era suportada para alguns caracteres..!
> 
É o procedimento que sempre uso. Mas como assim não conseguiu converter
alguns caracteres? Você detectou quais eram eles? O hexdump pode te
ajudar aqui.
Outra coisa, você tem certeza que o conjunto de caracteres (charset) de
origem era UTF-8 [1]?
Voce também pode olhar no PostgreSQL (backend/utils/mb/Unicode) para
verificar como o PostgreSQL está fazendo o mapeamento.

> Será que daria para implementar uma outra função de conversão no
> PostgreSQL ( i.e: CREATE CONVERSION utf8_to_ascii)?
> 
Acho que o tal mapeamento não existe porque o ASCII é um subconjunto do
UTF (aka UCS).

[1] http://www.unicode.org/charts/


-- 
  Euler Taveira de Oliveira
  http://www.timbira.com/
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a