Конвертирование базы данных из mysql в mongoDb

Есть ли простой способ изменить базу данных с mysql на mongoDB?

или лучше, если кто-нибудь предложит мне хороший учебник сделать это

Ответ 1

Есть ли простой способ изменить базу данных с mysql на mongoDB?

Метод # 1: экспорт из MySQL в формате CSV, а затем использовать инструмент mongoimport. Однако это не всегда хорошо работает с точки зрения обработки дат двоичных данных.

Метод №2: script передача на выбранном вами языке. В основном вы пишете программу, которая читает все из MySQL по одному элементу за раз, а затем вставляет его в MongoDB.

Метод # 2 лучше, чем # 1, но он все еще не подходит.

MongoDB использует коллекции вместо таблиц. MongoDB не поддерживает объединения. В каждой базе данных, которую я видел, это означает, что ваша структура данных в MongoDB отличается от структуры в MySQL.

Из-за этого не существует "универсального инструмента" для переноса SQL в MongoDB. Ваши данные необходимо будет преобразовать, прежде чем он достигнет MongoDB.

Ответ 2

Если вы используете Ruby, вы также можете попробовать: Mongify

Это супер простой способ преобразовать ваши данные из RDBS в MongoDB, не теряя ничего.

Mongify прочитает вашу базу данных mysql, создаст для вас файл перевода, и все, что вам нужно сделать, это карта, как вы хотите преобразовать данные.

Он поддерживает:

  • Автообновление идентификаторов (для идентификатора объекта BSON)
  • Обновление ссылочных идентификаторов
  • Тип значения литья
  • Вставка таблиц в другие документы
  • Перед сохранением фильтров (чтобы вручную внести изменения в данные)
  • и многое другое...

Подробнее об этом читайте по адресу http://mongify.com/getting_started.html

На домашней странице также есть короткое 5-минутное видео, которое показывает вам, насколько это просто.

Ответ 3

MongoVUE бесплатная версия может сделать это автоматически для вас.

Он может подключаться к обеим базам данных и выполнять импорт

Ответ 4

Я как бы частично отношусь к TalendOpenStudio для таких заданий миграции. Это решение на основе eclipse для визуального создания "сценариев переноса данных". Мне не нравится визуальное программирование, но это проблема, я делаю исключение.

Adrien Mogenet создал плагин MongoDBConnection для mongodb.

Вероятно, это слишком сложно для "простой" миграции, но ut - классный инструмент.

Помните, однако, что предложение Nix, вероятно, сэкономит вам время, если оно является одним из перемещений.

Ответ 5

Вы можете использовать инфраструктуру QCubed (http://qcu.be). Процедура будет примерно такой:

  • Установите QCubed (http://www.thetrozone.com/qcubed-installation)
  • Сделайте код в вашей базе данных. (Http://www.thetrozone.com/php-code-generation-qcubed-eliminating-sql-hassle)
  • Отключите вашу базу данных в автономном режиме от остальной части мира, чтобы работать только одна операция.
  • Теперь напишите script, который будет читать все строки из всех таблиц базы данных и использовать getJson для всех объектов, чтобы получить json. Затем вы можете использовать данные для преобразования в массив и вставлять его в mongoDB!

Ответ 6

Вот что я сделал с помощью 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);
});

Ответ 7

Если кто-то еще ищет решение, я обнаружил, что самый простой способ - написать PHP script для подключения к вашей базе данных SQL, получить нужную информацию с помощью обычного оператора Select, преобразовать информацию в JSON, используя PHP JSON кодирует функции и просто выводит ваши результаты в файл или непосредственно в MongoDB. Это на самом деле довольно просто и прямо, единственное, что нужно сделать, это дважды проверить ваш результат на Json validator, вам, возможно, придется использовать такие функции, как взорвать, чтобы заменить определенные символы и символы, чтобы сделать его действительным. Я сделал это раньше, но в настоящее время у меня нет script, но из того, что я помню, это буквально половина страницы кода.

О, также помните, что Mongo - это хранилище документов, поэтому требуется некоторое сопоставление данных, чтобы оно было приемлемым с mongo.

Ответ 8

Для тех, кто приходит к этому с той же проблемой, вы можете проверить этот проект Github. Это постоянная разработка, которая поможет вам перенести данные из базы данных MySQL в MongoDB, просто выполнив простую команду.

Он будет генерировать схемы MongoDB в TypeScript, чтобы вы могли использовать их позже в своем проекте. Каждая таблица MySQL будет коллекцией MongoDB, и типы данных будут эффективно преобразованы в их MongoDB-совместимые.

Документацию по этому же можно найти в проекте README.md. Не стесняйтесь войти и внести свой вклад. Хотел бы помочь в случае необходимости.

Ответ 9

Если вы ищете инструмент для этого, удачи.

Мое предложение состоит в том, чтобы просто выбрать ваш язык выбора и прочитать его и написать другому.

Ответ 10

Если бы я мог процитировать Мэтта Бриггса (он однажды решил мою проблему):

Путь водителя по FAR наиболее прямолинейный. Инструменты импорта/экспорта являются фантастическими, но только если вы используете их в качестве пары. Вы находитесь в дикой поездке, если ваша таблица включает даты, и вы пытаетесь экспортировать из db и импортировать в mongo.

Вам тоже повезло, будучи в С#. Мы используем ruby ​​и имеем 32 миллиона строк таблицы, которые мы перенесли в mongo. Наше окончательное решение заключалось в создании сумасшедшего заявления sql в postgres, который выводит json (включая некоторые довольно забавные вещи для правильной синхронизации дат) и передает результат этого запроса в командной строке в mongoimport. Это был невероятный день для написания, и это не то, что действительно может быть изменено.

Итак, если вы можете с этим справиться, используйте ado.net с драйвером mongo. Если нет, я желаю вам наилучшего: -)

(обратите внимание, что это происходит от общего фаунбоя манго)

MySQL очень похож на другие базы данных SQL, поэтому я отправляю вас в topić: Преобразование таблицы SQL в документ mongoDB

Ответ 11

Вы можете использовать следующий проект. Он требует, чтобы файл конфигурации solr был написан. Он очень простой и прямой.

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

Ответ 12

Попробуйте следующее: Автоматическое преобразование дампа MySQL в Mongo с использованием простых сопоставлений r2n. https://github.com/virtimus/mysql2mongo

Ответ 13

Я думаю, что один из самых простых способов - экспортировать базу данных 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/двоичные данные.