Páginas

segunda-feira, 24 de novembro de 2014

[MySQL] - Migrando MySQL para PostgreSQL


Bom pessoal, segue abaixo instruções para migração de bancos de dados MySQL para PostgreSQL com a ferramenta da EnterpriseDB.

Link para download da Ferramenta:

Migra Somente estrutura do Banco de dados sem chaves estrangeiras
cmd>runMTK.bat -schemaOnly -allTables -constraints -skipFKConst -sourcedbtype mysql employees

Migra somente os dados através de lotes de dados
cmd>runMTK.bat -dataOnly -fetchSize 1 -sourcedbtype mysql employees

Migra todo banco de dados com constraints e dados
cmd>runMTK.bat -fetchSize 1 -sourcedbtype mysql employees

-------
Configuração do arquivo "toolkit.properties":
SRC_DB_URL=jdbc:mysql://127.0.0.1/employees
SRC_DB_USER=root
SRC_DB_PASSWORD=teste

TARGET_DB_URL=jdbc:postgresql://localhost:5432/exemplo
TARGET_DB_USER=postgres
TARGET_DB_PASSWORD=teste

-------

Dentro da pasta do aplicativo, existe um arquivo chamado "mtk-readme.txt" que possui o help do utilitário.

-------

OBS:
Tendo o Java já instalado na sua maquina copie todos os .jar da pasta lib para a pasta C:\Program Files (x86)\Java\jre6\lib\ext ou lib\ext dentro da sua versão do Java que está instalada.

4 comentários:

  1. Olá Emerson.
    Muito bom seu artigo e o software. Me ajudou muito.
    Grato e parabéns !!

    ResponderExcluir
  2. Bom dia, achei interessante, porem não estou conseguindo migrar, na hora de eu inserir o código no CMD do windows, ele retorna um erro:

    Source database connectivity info…
    conn =jdbc:mysql://localhost/wordpress
    user =root
    password=******
    Target database connectivity info…
    conn =jdbc:postgresql://localhost:5432/wordpress
    user =postgres
    password=******
    Connecting with source MySQL database server…
    Error: java.lang.Exception: Following problem occurred while connecting to MySQL server.
    com.mysql.jdbc.Driver
    Stack Trace:
    java.sql.SQLException: java.lang.Exception: Following problem occurred while connecting to MySQL server.
    com.mysql.jdbc.Driver
    at com.edb.MigrationToolkit.initToolkit(MigrationToolkit.java:2624)
    at com.edb.MigrationToolkit.main(MigrationToolkit.java:1279)

    One or more schema objects could not be imported during the migration process. Please review the migration output for more details.

    Migration logs have been saved to C:\Users\FGS\.enterprisedb\migration-toolkit\logs

    ******************** Migration Summary ********************

    Total objects: 0
    Successful count: 0
    Failure count: 0

    *************************************************************
    Porquê minha base de dados MYSQL é localhost, portanto não tem senha, então não sei se o campo senha ficaria vazio. E como comecei a estudar POSTGRE hoje, não estou muito convicto que esteja funcionando.

    Desde já agradeço.

    ResponderExcluir
  3. Opa, acredito que pelo tempo tenhas conseguido... Tive o mesmo problemas, ai fui reler. Tudo funcionou depois que fiz a copia dos ".jar" para o diretório onde esta a instalação do JAVA em sua maquina. (conforme a observação do final do artigo.)

    ResponderExcluir
  4. Bom dia,

    Estou tentando fazer a migração de um banco MySQL para Postgres. Me parece que a conexão com o MySQL foi Ok. Mas quando vai para o Postgres, aparece esse erro:

    2021-07-19 10:22:43 Connecting with source MySQL database server...
    2021-07-19 10:22:43 Connected to MySQL, version '5.5.5-10.5.3-MariaDB-1:10.5.3+maria~focal'
    2021-07-19 10:22:43 Connecting with target EDB Postgres database server...
    2021-07-19 10:22:43 MTK-11009: Error Connecting Database "EDB Postgres"
    java.lang.NullPointerException
    2021-07-19 10:22:43 Stack Trace:
    com.edb.MTKException: MTK-11009: Error Connecting Database "EDB Postgres"
    at com.edb.common.MTKFactory.createMTKConnection(MTKFactory.java:253)
    at com.edb.MigrationToolkit.createNewTargetConnection(MigrationToolkit.java:6691)
    at com.edb.MigrationToolkit.initToolkit(MigrationToolkit.java:3619)
    at com.edb.MigrationToolkit.main(MigrationToolkit.java:1876)
    Caused by: java.lang.NullPointerException
    at com.edb.dbhandler.enterprisedb.EnterpriseDBConnection.loadDbServerCharterSet(EnterpriseDBConnection.java:96)
    at com.edb.dbhandler.enterprisedb.EnterpriseDBConnection.(EnterpriseDBConnection.java:47)
    at com.edb.common.MTKFactory.createMTKConnection(MTKFactory.java:249)
    ... 3 more
    2021-07-19 10:22:43
    2021-07-19 10:22:43 One or more schema objects could not be imported during the migration process. Please review the migration output for more details.
    2021-07-19 10:22:43

    O meu arquivo .properties está assim:
    SRC_DB_URL=jdbc:mysql://IP:Porta/na-palma
    SRC_DB_USER=xxxxx
    SRC_DB_PASSWORD=xxxxx

    TARGET_DB_URL=jdbc:postgresql://IP:Porta/na-palma-da-mao
    TARGET_DB_USER=xxxxx
    TARGET_DB_PASSWORD=xxxxx

    Não entendi porque ele tentou conectar com o banco EDB ao invés do na-palma-da=mao

    Podem me ajudar?

    ResponderExcluir