2
Tecnologia

[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 ideia 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.

 

Fonte: CooperaTI

Agility Solutions
A Agility Solutions acredita que, com disciplina, planejamento e conhecimento é possível administrar positivamente qualquer projeto.
http://www.agilitysolutions.com.br/

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *