Uma ferramenta robusta para migrar dados de MongoDB para PostgreSQL, desenvolvida em Go.
- Migração de collections MongoDB (arquivos BSON e JSON) para tabelas PostgreSQL
- Inferência automática de esquema baseada nos documentos
- Suporte para múltiplos formatos de exportação (BSON e JSON)
- Compatível com JSON Arrays e JSON Lines (um documento por linha)
- Opções para incluir ou excluir collections específicas
- Configuração flexível via flags de linha de comando
- Possibilidade de substituir tabelas existentes ou preservá-las
- Go 1.16 ou superior
- PostgreSQL 10 ou superior
- Arquivos BSON/JSON exportados do MongoDB
- Clone o repositório:
cd mongoXpostgres- Compile o programa (opcional):
go build -o mongoXsql- Crie um arquivo
.envna raiz do projeto com as seguintes variáveis:
POSTGRES_USER=seu_usuario
POSTGRES_PASSWORD=sua_senha
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_DB=seu_banco
POSTGRES_SSLMODE=disable
go run main.go -path <caminho-para-arquivos>Ou se você compilou o programa:
./mongoXsql -path <caminho-para-arquivos>| Flag | Descrição | Exemplo |
|---|---|---|
-path |
Caminho para o diretório com arquivos BSON/JSON (obrigatório) | -path ./dados_mongodb |
-drop |
Apaga tabelas existentes antes de criar novas | -drop |
-collections |
Lista de collections para migrar (separadas por vírgula) | -collections usuarios,produtos |
-skip |
Lista de collections para ignorar (separadas por vírgula) | -skip logs,temp |
-env |
Caminho para o arquivo .env (padrão: .env na raiz) | -env ./config/prod.env |
go run main.go -path ./dados_mongodbgo run main.go -path ./dados_mongodb -dropgo run main.go -path ./dados_mongodb -collections "usuarios,produtos,pedidos"go run main.go -path ./dados_mongodb -skip "logs,sessoes,temp"go run main.go -path ./dados_mongodb -env ./config/prod.env- O programa lê todos os arquivos BSON e/ou JSON do diretório especificado
- Para cada arquivo (collection), infere o esquema da tabela PostgreSQL
- Cria as tabelas correspondentes no PostgreSQL
- Migra os dados, convertendo os tipos do MongoDB para tipos PostgreSQL
- Cada tabela receberá:
- Uma coluna
idprimária UUID - Uma coluna
mongo_idpara o ID original do MongoDB - Colunas
created_ateupdated_atcom timestamps
- Uma coluna
- Campos com tipos mistos são convertidos para JSONB no PostgreSQL
- O valor de
_iddo MongoDB é migrado para a colunamongo_id(como TEXT) - As colunas inferidas são sempre NULLABLE para maior compatibilidade
- Se houver erros durante a inserção de dados, o programa continuará com os próximos documentos
- O programa não migra índices ou constraints além da chave primária
- Relacionamentos entre collections não são preservados automaticamente
- A ferramenta foi testada principalmente com dados exportados via mongodump
Se encontrar algum erro:
- Verifique se as credenciais do PostgreSQL estão corretas no arquivo
.env - Certifique-se de que o PostgreSQL está acessível e aceitando conexões
- Verifique se o caminho dos arquivos exportados está correto
- Verifique se os arquivos BSON/JSON são válidos e foram exportados corretamente
- Se uma tabela falhar na migração, tente usar a flag
-droppara recriá-la