Existe-t-il un moyen simple de changer la base de données de mysql à mongoDB ?
ou mieux, quelqu'un peut-il me suggérer un bon tutoriel pour le faire ?
Existe-t-il un moyen simple de changer la base de données de mysql à mongoDB ?
ou mieux, quelqu'un peut-il me suggérer un bon tutoriel pour le faire ?
Existe-t-il un moyen simple de changer la base de données de mysql à mongoDB ?
Méthode n° 1 : exporter à partir de MySQL dans un format CSV, puis utiliser la fonction outil mongoimport . Cependant, cela ne fonctionne pas toujours bien en termes de traitement des dates des données binaires.
Méthode n° 2 : script le transfert dans la langue de votre choix. En gros, vous écrivez un programme qui lit tout à partir de MySQL, un élément à la fois, puis l'insère dans MongoDB.
La méthode n°2 est meilleure que la n°1, mais elle n'est toujours pas adéquate.
MongoDB utilise des collections au lieu de tables. MongoDB ne prend pas en charge les jointures. Dans toutes les bases de données que j'ai vues, cela signifie que la structure de vos données dans MongoDB est différente de la structure dans MySQL.
Pour cette raison, il n'existe pas d'"outil universel" pour le portage de SQL vers MongoDB. Vos données devront être transformées avant d'atteindre MongoDB.
Si vous utilisez Ruby, vous pouvez également essayer : Mongify
Il s'agit d'un moyen très simple de transformer vos données d'un RDBS en MongoDB sans rien perdre.
Mongify lira votre base de données mysql, construira un fichier de traduction pour vous et tout ce que vous avez à faire est de définir comment vous voulez que vos données soient transformées.
Il prend en charge :
Pour en savoir plus, consultez le site : http://mongify.com/getting_started.html
Il y a également une courte vidéo de 5 minutes sur la page d'accueil qui vous montre à quel point c'est facile.
Voici ce que j'ai fait avec Node.js dans ce but :
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);
});
Je pense que l'un des moyens les plus simples est d'exporter la base de données MySQL en JSON, puis d'utiliser mongorestore pour l'importer dans une base de données MongoDB.
Étape 1 : Exporter la base de données MySQL en JSON
Chargez le fichier mysql dump dans une base de données MySQL si nécessaire.
Ouvrez MySQL Workbench et connectez-vous à la base de données MySQL.
Allez dans le visualiseur de schémas > Sélectionnez la base de données > Tables > cliquez avec le bouton droit de la souris sur le nom de la table à exporter.
Sélectionnez "Assistant d'exportation de données de table".
Définissez le format de fichier à .json et tapez un nom de fichier tel que tablename.json.
Note : Tous les tableaux devront être exportés individuellement.
Étape 2 : Importez les fichiers JSON vers une base de données MongoDB à l'aide de la commande mongorestore.
La commande mongorestore doit être exécutée à partir de la ligne de commande du serveur (et non du shell mongo).
Notez que vous pouvez avoir besoin de fournir les détails d'authentification ainsi que l'option --jsonArray, voir l'onglet docs mongorestore pour plus d'informations
mongoimport -d dbname -u ${MONGO_USERNAME} -p ${MONGO_PASSWORD} --authenticationDatabase admin -c collectionname --jsonArray --file tablename.json
Remarque : cette méthode ne fonctionnera pas si la base de données MySQL d'origine contient des BLOBs/données binaires.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.