Existe alguma ferramenta de linha de comando para converter o banco de dados MySQL para PostgreSQL? Eu também gostaria de saber se existe uma maneira de converter o banco de dados usando o mysqldump
comando normal .
Existe alguma ferramenta de linha de comando para converter o banco de dados MySQL para PostgreSQL? Eu também gostaria de saber se existe uma maneira de converter o banco de dados usando o mysqldump
comando normal .
Respostas:
você tentou:
mysqldump --compatible=postgresql dbname > export.sql
faça isso para escapar de aspas
sed "s/\\\'/\'\'/g" export.sql > export1.sql
pode precisar de mais massagens, então olhe o mysqldump doco mais de perto.
mysqldump
ainda. syntax error at or near "(" LINE 2: "id" int(10) NOT NULL,
Aqui estão algumas ferramentas de código aberto, que podem ser muito úteis:
FromMySqlToPostgreSql
é uma ferramenta de alcance de recursos e muito fácil de usar.
Ele mapeia tipos de dados, migra restrições, índices, PKs e FKs exatamente como estavam no seu banco de dados MySQL.
Sob o capô, ele usa o PostgreSQL COPY, portanto a transferência de dados é muito rápida.
FromMySqlToPostgreSql escrito em PHP (> = 5.4).
O pgloader é uma ferramenta de carregamento de dados para o PostgreSQL, usando o comando COPY. Sua principal vantagem sobre apenas usar
COPY
ou \copy
, e o uso excessivo de um invólucro de dados externos, é o seu comportamento de transação, em que o pgloader mantém um arquivo separado de dados rejeitados, mas continua tentando copiar bons dados no seu banco de dados. O comportamento padrão do PostgreSQL é transacional, o que significa que qualquer linha incorreta nos dados de entrada (arquivo ou banco de dados remoto) interromperá todo o carregamento em massa da tabela. O pgloader também implementa a reformatação de dados, um exemplo típico disso é a transformação dos carimbos de dados do MySQL 0000-00-00 e 0000-00-00 00:00:00 para o PostgreSQLNULL
value (porque nosso calendário nunca teve um ano zero).
Na verdade, existe uma ferramenta de migração gratuita bastante fácil de usar, desenvolvida pelo próprio EnterpriseDB. Pode ser instalado através do StackBuilder: Migration Toolkit
Recentemente, usei uma ferramenta não-gratuita da DBConvert para converter um banco de dados de acesso ao postgres e achei que valeu a pena o dinheiro comparado à quantidade de tempo que perdi tentando fazê-lo de forma confiável e gratuita. A vender uma ferramenta semelhante para o MySQL <-> postgres , que eu não usei, mas pode valer a pena considerar, a menos que você esteja interessado apenas em ferramentas de linha de comando.
Caso você esteja se perguntando, eu não sou afiliado a eles de nenhuma maneira :-)
Você pode usar o Assistente de Migração do EnterpriseDB, por exemplo.
Ele pode simular migrar o OracleDB. Mas para o Mysql, ele tem algumas limitações, por exemplo, não suporta visualizações, gatilhos, procedimentos armazenados.
Para mais informações, consulte EDB Migration Toolkit . Não tenho certeza, mas pode ser possível migrar o mysql-> oracle-> postgresql salvando seus procedimentos armazenados (caso existam).
Isso é apenas para adicionar às respostas existentes, o que me ajudou a encontrar esta solução. Eu usei FromMySqlToPostgreSql . Tudo o que você precisa fazer é baixar e extrair o FromMySqlToPostgreSql , fazer uma cópia do arquivo de configuração de amostra, definir os valores de conexão db nele e executar o arquivo de índice com o seguinte comando:
php index.php config.xml
Simples, mas eficaz!
Existe uma ferramenta de código-fonte aberto que fornece funcionalidades para converter um banco de dados MySQL em Postgresql db, incluindo índices, fks e dados.
https://github.com/ggarri/mysql2psql
Essa ferramenta também permite definir alterações no esquema para que você possa executar algumas atualizações no esquema atual em tempo de execução.