sexta-feira, setembro 25, 2009

Corrigindo a Codificação na Exportação de Shapefiles para SQL

No processo de exportação de Shapefiles para SQL já podemos modificar a codificação do arquivo gerado para a mesma codificação do Banco, evitando a inserção de caracteres estranhos nas tabelas (�). Também é comum nos depararmos com o erro abaixo quando tentamos importar um arquivo .sql na codificação LATIN1 (ou ISO-8859-1) para um Banco de Dados em UTF-8:

ERRO:  sequência de bytes é inválida para codificação "UTF8": 0xed7269
HINT:  Este erro pode acontecer também se a sequência de bytes não corresponde a codificação esperado pelo servidor, que é controlada por "client_encoding".


Para evitar este problema, use o comando shp2psql junto com o comando iconv, que é responsável por fazer esta modificação. A sintaxe é a seguinte:


shp2pgsql -s SRID shapefile nome_da_tabela | iconv  -f codificacao_de_origem -t codificacao_de_destino > arquivo_sql.sql


Exemplo:

shp2pgsql -s 4291 municipios_ibge.shp municipios | iconv -f LATIN1 -t UTF-8 > municipios.sql  

Em seguida, use psql -f municipios.sql -d seu_banco_utf8 para criar a tabela com seus registros.

Nenhum comentário: