Есть ли простой способ изменить базу данных с mysql на mongoDB?
или лучше, если кто-нибудь предложит мне хороший учебник сделать это
Есть ли простой способ изменить базу данных с mysql на mongoDB?
или лучше, если кто-нибудь предложит мне хороший учебник сделать это
Есть ли простой способ изменить базу данных с mysql на mongoDB?
Метод # 1: экспорт из MySQL в формате CSV, а затем использовать инструмент mongoimport. Однако это не всегда хорошо работает с точки зрения обработки дат двоичных данных.
Метод №2: script передача на выбранном вами языке. В основном вы пишете программу, которая читает все из MySQL по одному элементу за раз, а затем вставляет его в MongoDB.
Метод # 2 лучше, чем # 1, но он все еще не подходит.
MongoDB использует коллекции вместо таблиц. MongoDB не поддерживает объединения. В каждой базе данных, которую я видел, это означает, что ваша структура данных в MongoDB отличается от структуры в MySQL.
Из-за этого не существует "универсального инструмента" для переноса SQL в MongoDB. Ваши данные необходимо будет преобразовать, прежде чем он достигнет MongoDB.
Если вы используете Ruby, вы также можете попробовать: Mongify
Это супер простой способ преобразовать ваши данные из RDBS в MongoDB, не теряя ничего.
Mongify прочитает вашу базу данных mysql, создаст для вас файл перевода, и все, что вам нужно сделать, это карта, как вы хотите преобразовать данные.
Он поддерживает:
Подробнее об этом читайте по адресу http://mongify.com/getting_started.html
На домашней странице также есть короткое 5-минутное видео, которое показывает вам, насколько это просто.
MongoVUE бесплатная версия может сделать это автоматически для вас.
Он может подключаться к обеим базам данных и выполнять импорт
Я как бы частично отношусь к TalendOpenStudio для таких заданий миграции. Это решение на основе eclipse для визуального создания "сценариев переноса данных". Мне не нравится визуальное программирование, но это проблема, я делаю исключение.
Adrien Mogenet создал плагин MongoDBConnection для mongodb.
Вероятно, это слишком сложно для "простой" миграции, но ut - классный инструмент.
Помните, однако, что предложение Nix, вероятно, сэкономит вам время, если оно является одним из перемещений.
Вы можете использовать инфраструктуру QCubed (http://qcu.be). Процедура будет примерно такой:
Вот что я сделал с помощью Node.js для этой цели:
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);
});
Если кто-то еще ищет решение, я обнаружил, что самый простой способ - написать PHP script для подключения к вашей базе данных SQL, получить нужную информацию с помощью обычного оператора Select, преобразовать информацию в JSON, используя PHP JSON кодирует функции и просто выводит ваши результаты в файл или непосредственно в MongoDB. Это на самом деле довольно просто и прямо, единственное, что нужно сделать, это дважды проверить ваш результат на Json validator, вам, возможно, придется использовать такие функции, как взорвать, чтобы заменить определенные символы и символы, чтобы сделать его действительным. Я сделал это раньше, но в настоящее время у меня нет script, но из того, что я помню, это буквально половина страницы кода.
О, также помните, что Mongo - это хранилище документов, поэтому требуется некоторое сопоставление данных, чтобы оно было приемлемым с mongo.
Для тех, кто приходит к этому с той же проблемой, вы можете проверить этот проект Github. Это постоянная разработка, которая поможет вам перенести данные из базы данных MySQL в MongoDB, просто выполнив простую команду.
Он будет генерировать схемы MongoDB в TypeScript, чтобы вы могли использовать их позже в своем проекте. Каждая таблица MySQL будет коллекцией MongoDB, и типы данных будут эффективно преобразованы в их MongoDB-совместимые.
Документацию по этому же можно найти в проекте README.md. Не стесняйтесь войти и внести свой вклад. Хотел бы помочь в случае необходимости.
Если вы ищете инструмент для этого, удачи.
Мое предложение состоит в том, чтобы просто выбрать ваш язык выбора и прочитать его и написать другому.
Если бы я мог процитировать Мэтта Бриггса (он однажды решил мою проблему):
Путь водителя по FAR наиболее прямолинейный. Инструменты импорта/экспорта являются фантастическими, но только если вы используете их в качестве пары. Вы находитесь в дикой поездке, если ваша таблица включает даты, и вы пытаетесь экспортировать из db и импортировать в mongo.
Вам тоже повезло, будучи в С#. Мы используем ruby и имеем 32 миллиона строк таблицы, которые мы перенесли в mongo. Наше окончательное решение заключалось в создании сумасшедшего заявления sql в postgres, который выводит json (включая некоторые довольно забавные вещи для правильной синхронизации дат) и передает результат этого запроса в командной строке в mongoimport. Это был невероятный день для написания, и это не то, что действительно может быть изменено.
Итак, если вы можете с этим справиться, используйте ado.net с драйвером mongo. Если нет, я желаю вам наилучшего: -)
(обратите внимание, что это происходит от общего фаунбоя манго)
MySQL очень похож на другие базы данных SQL, поэтому я отправляю вас в topić: Преобразование таблицы SQL в документ mongoDB
Вы можете использовать следующий проект. Он требует, чтобы файл конфигурации solr был написан. Он очень простой и прямой.
Попробуйте следующее: Автоматическое преобразование дампа MySQL в Mongo с использованием простых сопоставлений r2n. https://github.com/virtimus/mysql2mongo
Я думаю, что один из самых простых способов - экспортировать базу данных MySQL в JSON, а затем использовать mongorestore для импорта ее в базу данных MongoDB.
Шаг 1: Экспорт базы данных MySQL в JSON
Загрузите файл дампа mysql в базу данных MySQL, если это необходимо
Откройте MySQL Workbench и подключитесь к базе данных MySQL
Перейдите в просмотрщик схемы> Выберите базу данных> Таблицы> щелкните правой кнопкой мыши имя таблицы для экспорта
Выберите "Мастер экспорта табличных данных"
Установите формат файла .json и введите имя файла, например tablename.json.
Примечание. Все таблицы необходимо экспортировать по отдельности.
Шаг 2: Импортируйте файлы JSON в MongoDB с помощью команды mongorestore
Команда mongorestore должна запускаться из командной строки сервера (не оболочки mongo)
Обратите внимание, что вам может потребоваться предоставить данные аутентификации, а также параметр --jsonArray, см. Документацию mongorestore для получения дополнительной информации.
mongoimport -d dbname -u ${MONGO_USERNAME} -p ${MONGO_PASSWORD} --authenticationDatabase admin -c collectionname --jsonArray --file tablename.json
Примечание. Этот метод не будет работать, если исходная база данных MySQL содержит BLOB/двоичные данные.
Я использовал Studio 3T после того, как бросил борьбу с некоторыми проблемами конфигурации с mongify. У них есть хороший учебник: https://www.youtube.com/watch?time_continue=17&v=jeS81XyNSYc