a converter a base de dados do mysql para o mongoDb

Há alguma maneira fácil de mudar a base de dados de mysql para mongoDB ?

ou melhor, qualquer um que me sugira um bom tutorial faça-o

Author: Community, 2011-06-06

12 answers

Há alguma maneira fácil de mudar a base de dados de mysql para mongoDB ?

Método #1 : exportar do MySQL num formato CSV e depois usar a ferramenta mongoimport . No entanto, isso nem sempre funciona bem em termos de manipulação de datas de dados binários.

Método # 2 : script the transfer in your language of choice. Basicamente você escreve um programa que lê tudo a partir de MySQL um elemento de cada vez e, em seguida, inseri-lo em MongoDB.

O Método # 2 é melhor que o #1, mas ainda não é adequado.

O MongoDB usa colecções em vez de tabelas. O MongoDB não suporta as juntas. Em cada banco de dados que eu vi, isso significa que sua estrutura de dados em MongoDB é diferente da estrutura em MySQL.

Por causa disso, não há nenhuma "ferramenta universal" para portar SQL para MongoDB. Os seus dados terão de ser transformados antes de chegarem a MongoDB.
 42
Author: Gates VP, 2011-06-07 15:21:38
Se está a usar a Ruby, também pode tentar.: Mongify É uma forma super simples de transformar os dados de um RDBS para o MongoDB sem perder nada.

O Mongify irá ler a sua base de dados mysql, construir um ficheiro de tradução para si e tudo o que tem de fazer é mapear como quer que os seus dados sejam transformados.

Suporta:

  • IDs de actualização automática (para BSON ObjectID)
  • Actualizar os IDs de referência
  • Tipo De Fundição valores
  • incorporar tabelas noutros documentos
  • Antes de gravar os filtros (para permitir alterações aos dados manualmente)
  • E muito mais...

Leia mais sobre isso em: http://mongify.com/getting_started.html

Também há um vídeo curto de 5 minutos na página inicial que mostra como é fácil.

 21
Author: Andrew K, 2015-03-17 02:51:44

A versão gratuita do MongoVUE pode fazer isto automaticamente para si.

Pode ligar-se a ambas as bases de dados e efectuar a importação

 5
Author: umutm, 2012-12-12 13:38:33

Sou um pouco parcial a TalendOpenStudio para esse tipo de trabalho de migração. É uma solução baseada no eclipse para criar "scripts" de migração de dados de uma forma visual. Eu não gosto de programação visual, mas este é um domínio problema que eu faço uma exceção.

Adrien Mogenet criou um 'plugin' MongoDBConnection para o mongodb.

É provavelmente um exagero para uma migração "simples", mas o ut é uma ferramenta fixe. Mas lembre-se que a sugestão de Nix vai talvez lhe poupe tempo se for uma migração.
 1
Author: Peter Tillemans, 2011-06-06 12:05:11

Pode usar o QCubed ( http://qcu.be ([3]) enquadramento para esse efeito. O procedimento seria algo assim:

  1. Instalar o QCubed ( http://www.thetrozone.com/qcubed-installation)
  2. Faz o codegen na tua base de dados. (http://www.thetrozone.com/php-code-generation-qcubed-eliminating-sql-hassle) Desligue a sua base de dados do resto do mundo para que só uma operação funcione de cada vez.
  3. agora Escreva um script que irá ler todas as linhas de todas as tabelas da base de dados e usar o getJson em todos os objetos para obter o json. Você pode então usar os dados para converter para array e empurrá-lo para o mongoDB!

 1
Author: Vaibhav Kaushal, 2012-06-26 04:41:13

Para aqueles que chegam a isto com o mesmo problema, você pode verificar este projeto Github . Este é um desenvolvimento em curso que irá ajudá-lo a migrar dados do banco de dados MySQL para o MongoDB, simplesmente executando um comando simples.

Irá gerar esquemas do MongoDB em TypeScript para que possa usá-los mais tarde no seu projecto. Cada tabela MySQL será uma coleção MongoDB,e datatypes serão convertidos eficientemente para seus compatíveis MongoDB.

A documentação para a o mesmo pode ser encontrado no projeto README.md Sinta-se à vontade para entrar e contribuir. Gostaria de ajudar, se necessário.

 1
Author: Danny Sofftie, 2018-10-04 11:39:33
Se está à procura de uma ferramenta para o fazer por si, boa sorte. A minha sugestão é escolher a tua língua de eleição, ler de uma e escrever para outra.
 0
Author: Nix, 2011-06-06 11:54:44
Se pudesse citar o Matt Briggs, resolveu o meu problema uma vez.
O caminho do condutor é, de longe, o mais recto para a frente. As ferramentas de importação / exportação são fantásticas, mas só se as estiver a usar como par. Você está em um passeio selvagem se sua mesa inclui datas e você tenta exportar do db e importar para mongo. Também tens sorte por estares em C#. Estamos usando ruby, e temos uma mesa de 32 milhões de linhas que migramos para mongo. A nossa solução final era criar um insane SQL statement in postgres that output json (including some pretty kludgy things to get dates going properly) and piped the output of that query on the command line into mongoimport. Foi preciso um dia incrivelmente frustrante para escrever, e não é o tipo de coisa que pode realmente ser mudada.

Por isso, se te safares, usa ado.net com o motorista do mongo. Caso contrário, desejo-lhe o melhor: -)

(note que isto vem de um mongo total fanboi)

O MySQL é muito semelhante a outras bases de dados SQL, por isso, envio-te para topić.: converter a tabela SQL para o documento mongoDB
 0
Author: Zozo, 2017-05-23 12:10:40

Pode utilizar o seguinte project.It necessita que o ficheiro de configuração do tipo solr seja gravado.É muito simples e direto para a frente.

Http://code.google.com/p/sql-to-mongo-importer/

 0
Author: sathis, 2011-07-23 06:10:11
Tenta isto.: Conversão automática do dump MySQL para atualizações Mongo usando mapeamentos R2N simples. https://github.com/virtimus/mysql2mongo
 0
Author: Virtimus, 2013-02-13 23:35:35
Eis o que fiz com o nodo.js para este efeito:
var mysql = require('mysql');
var MongoClient = require('mongodb').MongoClient;

function getMysqlTables(mysqlConnection, callback) {
    mysqlConnection.query("show full tables where Table_Type = 'BASE TABLE';", function(error, results, fields) {
        if (error) {
            callback(error);
        } else {
            var tables = [];
            results.forEach(function (row) {
                for (var key in row) {
                    if (row.hasOwnProperty(key)) {
                        if(key.startsWith('Tables_in')) {
                            tables.push(row[key]);
                        }
                    }
                }
            });
            callback(null, tables);
        }
    });

}

function tableToCollection(mysqlConnection, tableName, mongoCollection, callback) {
    var sql = 'SELECT * FROM ' + tableName + ';';
    mysqlConnection.query(sql, function (error, results, fields) {
        if (error) {
            callback(error);
        } else {
            if (results.length > 0) {
                mongoCollection.insertMany(results, {}, function (error) {
                    if (error) {
                        callback(error);
                    } else {
                        callback(null);
                    }
                });
            } else {
                callback(null);
            }
        }
    });
}

MongoClient.connect("mongodb://localhost:27017/importedDb", function (error, db) {
    if (error) throw error;

    var MysqlCon = mysql.createConnection({
        host: 'localhost',
        user: 'root',
        password: 'root',
        port: 8889,
        database: 'dbToExport'
    });

    MysqlCon.connect();

    var jobs = 0;

    getMysqlTables(MysqlCon, function(error, tables) {
        tables.forEach(function(table) {
            var collection = db.collection(table);
            ++jobs;
            tableToCollection(MysqlCon, table, collection, function(error) {
                if (error) throw error;
                --jobs;
            });
        })
    });

    // Waiting for all jobs to complete before closing databases connections.
    var interval = setInterval(function() {
        if(jobs<=0) {
            clearInterval(interval);
            console.log('done!');
            db.close();
            MysqlCon.end();
        }
    }, 300);
});
 0
Author: benkamin, 2017-03-10 22:50:19

Se alguém ainda estiver à procura de uma solução, descobri que a maneira mais fácil é escrever um programa de PHP para se ligar ao seu SQL DB, recuperar a informação que deseja usando a instrução de selecção habitual, transformar a informação em JSON usando as funções de codificar PHP JSON e simplesmente enviar os seus resultados para Ficheiro ou directamente para o MongoDB. Na verdade, é muito simples e direto para a frente, a única coisa a fazer é verificar a sua saída com um validador Json, você pode ter que usar funções tais como explodir para substituir certos caracteres e símbolos para torná-lo válido. Eu já fiz isso antes, no entanto, eu atualmente Não tenho o script em mãos, mas pelo que me lembro foi literalmente meia página de código.

Oh também lembre-se que Mongo é uma loja de documentos por isso é necessário algum mapeamento de dados para que seja aceitável com mongo.

 0
Author: ali habib, 2017-08-14 14:01:41