Você pode já ter lido vários artigos sobre esse assunto, mas provavelmente conseguiu apenas fragmentos da informação necessária. É hora de colocar tudo junto e na prática.
Você tem um projeto/sistema rodando no MySQL e de repente você descobre que você precisa migrar para PostgreSQL. E você se depara com um SQL diferente para cada plataforma, o MySQL trabalha com SQL e o PostgreSQL trabalha com PL/SQL, mas você não tem tempo para reescrever o código do zero e, logicamente, se você tiver tempo de reestruturar o seu projeto para PostgreSQL, o seu Data Base vai ficar mais organizado e, como um bom Data Base deve ser com relacionamento entre tabelas, trigger, functions e etc.
Na verdade, pode haver boas razões para migrar um Data Base de MySQL para PostgreSQL:
- Você pode vender o seu produto com total tranquilidade (PostgreSQL é licenciada BSD, o diferente de MySQL)
- Você pode encontrar artigos “Migrando MySQL para PostgreSQL” na web, você não vai encontrar nenhuma “Migrando PostgreSQL para MySQL”
- PostgreSQL não pode ser apenas mais um péssimo banco se o Skype, Cisco, Juniper, IMDb, Pandora ou NOVA TV decidiram confiar nele, além de a Sun Microsystems tê-lo tornado como base de dados de escolha (o que é extremamente engraçado, já que em janeiro de 2008 ela comprou o MySQL)
No PostgreSQL você ainda pode sentir um pouco como uma pessoa com segurança particular. Existem alguns grandes projetos como o Asterisk, Horde ou DBMail que já reconheceram suas qualidades e que, embora o MySQL tenha sido sua primeira escolha de Banco de Dados, eles estão demonstrando esforço para fazer tudo funcionar.
Mas chega de blablabla…
Convertendo Base de Dados MySQL para PostgreSQL
Primeiramente vamos fazer Backup de nossa Data Base MySQL com o software mysqldump do próprio MySQL:
mysqldump --compatible=postgresql bancodedados > bkp-bancodedados.sql
Convertendo caracteres para o SQL ficar funcional no PostgreSQL:
sed "s/\\\'/\'\'/g" bkp-bancodedados.sql
Este processo vai demorar muito tempo porque o software “sed” varrerá todo o arquivo para fazer a conversão
Colocando as coisas para funcionar: importando para o PosgreSQL
psql -h server -d databasename -U username -W < bkp-bancodedados.sql
Com isso você migrou sua estrutura de Dados de MySQL para PostgreSQL.
Ambiente usado no estudo:
- Linux – Distribuição CentOS 5.2
- PostgreSQL 8.0.22 Release
Mais sobre PostgreSQL