Produto & UXARTIGO

Migrando MySQL para PostgreSQL

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 MySQLMySQL8 conteúdosMySQL + Adminer + Docker Compose: montando rapidamente um ambiente para usoData · abr 2019Banco de dados MYSQL no PHPStormDev (Back & Front) · jul 2019Criando um ambiente de desenvolvimento PHP mínimo com Docker – Parte 3Dev (Back & Front) · out 2019Ver tudo em Data 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:

Mais sobre PostgreSQL

Fundador da nuveo.ai/levpay (com Banco Rendimento) e Matemático pelo IME-USP. Trabalha no dia a dia com inteligência artificial, rede neural (usando técnicas de machine e deep learning) e visão computacional. Com a necessidade de processar grandes volumes de dados o seu foco de pesquisa e desenvolvimento incluem Go, Racket/Clojure (apaixonado por dialeto lisp), Python, sistemas distribuídos, concorrência e já passou por diversos projetos Open Source https://github.com/avelino.

Ver perfil