Este post é dedicado aos que precisam migrar uma base de um encode para outro, vamos usar o exemplo aqui de UTF8 para ISO-8859-1.
Então vamos lá, imagine que você tenha um dump da database que precisa migrar.
Vou considerar que você já tenha feito os pontos abaixo:
1 - Backup de tudo
2 - O dump já feito e a database que deve ser migrada já foi "dropada".
O grande segredo é o comando 'iconv' do Linux, então vamos usá-lo para converter seu dump:
iconv -f utf-8 -f iso-8859-1 teu_dump_uft8.sql > teu_dump_iso88591.sql
Neste passo já pode utilizar o pipe e psql para já importar o dump sem gerá-lo se não tiver espaço em disco.
MAS, não esqueça de trocar o encode do client, com o seguinte comando:
sed "s/SET client_encoding = 'UTF8';/SET client_encoding = 'LATIN1';/g" teu_dump_iso88591.sql > teu_dump_iso88591-new.sql
Feito isso vamos importar o tal do dump convertido: psql -U postgres teu_banco < teu_dump_iso88591-new.sql
Pronto, agora só não funcionará se tiver nesta database o uso da function 'TO_ASCII', se você precisar utilizar essa função siga as instruções deste blog:
> http://arezi.wordpress.com/2008/04/09/postgresql-funcao-to_ascii-em-banco-utf-8/
Opa Gabriel.
ResponderExcluirMuito interessante essa opção.
Abraços.
Valeu pelo comentário, espero que lhe seja útil. Abraços!
ResponderExcluir