Modificar encoding do banco de dados PostgreSQL no Ubuntu Server

Este artigo tem como objetivo ensinar como modificar o encoding do banco de dados PostgreSQL 9.1 de ISO-8859-1 (ISO LATIN1) para UTF-8, em um sistema operacional Ubuntu Server 11.10.

Ao instalar o PostgreSQL, ele inicializa automaticamente uma área de armazenamento de banco de dados no disco. Chamamos isso de um cluster de banco de dados. Um cluster de banco de dados é uma coleção de bancos de dados que são gerenciados por uma única instância de um servidor de banco de dados rodando.

O encoding deste cluster por padrão vai possuir o mesmo encoding do sistema operacional.

Ao se criar um banco de dados novo, tal banco vai possuir o encoding do seu cluster.

Ou seja, se o sistema operacional possui o encoding Latin1, o cluster padrão do PostgreSQL chamado de “main” também vai possuir este encoding. E os bancos de dados criados neste cluster também terão o mesmo encoding.

Existem três opções para modificar o encoding do banco de dados:

Antes de efetuar qualquer umas dessas opções, certifique-se de fazer backup dos seus bancos de dados.

1 – Modificar o encoding do sistemas operacional para UTF-8 e reinstalar o PostgreSQL. Neste caso ao reinstalar o PostgreSQL ele cria o cluster padrão com o encoding do sistema operacional.

2 – Criar um novo cluster com o encoding UTF-8. Neste caso você terá um novo cluster rodando em uma nova porta, por exemplo: 5433;

3 – Apagar o cluster padrão e recriá-lo com o encoding UTF-8;

Neste artigo vamos executar a terceira opção, por entender, que ela é a que exige menos esforço e tempo.

1 – Modificar o encoding do sistema operacional através do seguinte comando:

update-locale LANG=pt_BR.UTF-8 LC_MESSAGES=pt_BR.UTF-8

2 – Reinicie o computador para aplicar a mudança do encoding.

3 – Para destruir o cluster padrão, digite o comando abaixo(9.1 é a versão do PostgreSQL):

$sudo pg_dropcluster –stop 9.1 main

4 – Para criar o novo cluster padrão digite:

$sudo pg_createcluster -e UTF-8 –start 9.1 main

Pronto, agora bastar criar seus bancos de dados e eles já terão a codificação UTF-8;

Banco de Dados MySQL

Para fazer o backup digite o seguinte comando:

mysqldump -u <username> -p –database <database_name> > backup_banco.sql

Após digitar esse comando vai ser solicitado a senha, basta digitá-la para finalizar o backup;

Para Restaurar o backup basta digitar o seguinte comando:

mysql -u root -p123 -h localhost banco_exemplo < backup_banco.sql

Obs: O Banco de Dados “banco_exemplo” deve ser criado previamente;

Miscelânea de comandos

#create database
CREATE DATABASE DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

#criar usuário e liberar acesso
CREATE USER ”@’%’ IDENTIFIED BY ”;
GRANT ALL ON .* TO ”@’%’;

#migração direta
mysqldump –allow-keywords –opt -u -h -p | mysql -u -h -p