a converter a base de dados do mysql para o mongoDb
ou melhor, qualquer um que me sugira um bom tutorial faça-o
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.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.
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
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.Pode usar o QCubed ( http://qcu.be ([3]) enquadramento para esse efeito. O procedimento seria algo assim:
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.
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.O MySQL é muito semelhante a outras bases de dados SQL, por isso, envio-te para topić.: converter a tabela SQL para o documento mongoDBPor 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)
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.
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);
});
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.