[PostgreSQL] – Alterando o encoding de um banco
Bem, essa dica não serve para converter um banco já existente de UTF-8 para LATIN1, para isso existem outras técnicas. A idéia apresentada aqui é para quando você tem um Dump LATIN1 e precisa restaurar em um novo servidor com o mesmo encoding, mas o Locale de seu Sistema Operacional não permite que você crie um banco LATIN1.
O erro de Locale aparece quando você executa:
# CREATE DATABASE xpto ENCODING ‘latin1’ TEMPLATE template0;
ERROR: encoding “LATIN1″ does not match locale “pt_BR.UTF-8″
DETAIL: The chosen LC_CTYPE setting requires encoding “UTF8″.
Ocorre devido ao Locale estar configurado para UTF-8, você pode corrigir o locale, mas também pode simplesmente criar o banco em UTF-8 e depois alterar para LATIN1
# CREATE DATABASE xpto TEMPLATE template0;
Assim você acabou de criar o banco xpto com encoding UTF-8, para conferir basta dar um \l no PSQL.
Agora para alterar para LATIN1 basta executar:
# update pg_database set encoding = pg_char_to_encoding(‘LATIN1’) where datname = ‘xpto’;
Pronto, confira novamente com \l que o encoding já esta alterado.
Agora é só restaurar seu dump.
Referencia:
http://jf.eti.br/alterando-o-encoding-de-um-banco-postgresql/
http://blog.gaudencio.net.br/2014/12/postgresql-alterando-o-encoding-de-um.html
Boa noite Emerson, tudo bem ?
Eu tenho um banco postgreSQL que é sql-anscii e preciso muda-lo para utf8, teria alguma maneira de fazer isso ?
Grato,
André Simão
Boa noite. O autor do artigo não faz mais parte do nosso quadro de escritores, mas estou deixando o contato dele no Linkedin para você tirar a sua dúvida diretamente com ele.
https://www.linkedin.com/in/emersongaudencio/
Boa noite Emerson, tudo bem ?
Eu tenho um banco postgreSQL que é sql-anscii e preciso muda-lo para utf8, teria alguma maneira de fazer isso ?
Grato,