Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将数据库从mysql转换为mongoDb_Mysql_Mongodb_Database - Fatal编程技术网

将数据库从mysql转换为mongoDb

将数据库从mysql转换为mongoDb,mysql,mongodb,database,Mysql,Mongodb,Database,有没有简单的方法将数据库从mysql更改为mongoDB 或者最好有人建议我做一个好的教程。如果你想找一个工具来帮你做,祝你好运 我的建议是选择你所选择的语言,从一种语言读到另一种语言写到另一种语言。如果我能引用马特·布里格斯的话(这一次解决了我的问题): 司机路是目前为止最直的。导入/导出工具非常棒,但前提是您将它们作为一对使用。如果您的表中包含日期,并且您尝试从db导出并导入到mongo中,那么您将处于一种疯狂的状态 你也很幸运,在c。我们使用的是ruby,有一个3200万行的表迁移到了mo

有没有简单的方法将数据库从mysql更改为mongoDB


或者最好有人建议我做一个好的教程。如果你想找一个工具来帮你做,祝你好运


我的建议是选择你所选择的语言,从一种语言读到另一种语言写到另一种语言。

如果我能引用马特·布里格斯的话(这一次解决了我的问题):

司机路是目前为止最直的。导入/导出工具非常棒,但前提是您将它们作为一对使用。如果您的表中包含日期,并且您尝试从db导出并导入到mongo中,那么您将处于一种疯狂的状态

你也很幸运,在c。我们使用的是ruby,有一个3200万行的表迁移到了mongo。我们最终的解决方案是在postgres中编写一个疯狂的sql语句,输出json(包括一些非常麻烦的事情,以使日期正常运行),并通过管道将命令行上的查询输出传输到mongoimport。写这篇文章花了令人难以置信的沮丧的一天,而且这类事情永远不会真正改变

因此,如果您可以摆脱它,请将ado.net与mongo驱动程序一起使用。如果没有,我祝你一切顺利:-)

(注意,这是来自mongo fanboi的总数)

MySQL与其他SQL数据库非常相似,因此我将您发送到topić:

我有点偏爱那种移民工作。它是一个基于eclipse的解决方案,以可视化的方式创建数据迁移“脚本”。我不喜欢可视化编程,但这是一个有问题的领域,我例外

Adrien Mogenet已经为mongodb创建了一个插件

对于一个“简单”的迁移来说,这可能有些过分,但ut是一个很酷的工具

但是,请注意,如果是迁移,那么Nix的建议可能会节省您的时间

有没有简单的方法将数据库从mysql更改为mongoDB

方法#1:以CSV格式从MySQL导出,然后使用。然而,就处理二进制数据的日期而言,这并不总是很有效

方法#2:用您选择的语言编写转移脚本。基本上,您编写一个程序,每次读取MySQL中的一个元素,然后将其插入MongoDB

方法#2优于方法#1,但仍然不够充分

MongoDB使用集合而不是表。MongoDB不支持联接。在我见过的每个数据库中,这意味着MongoDB中的数据结构与MySQL中的结构不同


因此,没有将SQL移植到MongoDB的“通用工具”。您的数据在到达MongoDB之前需要进行转换。

您可以使用以下项目。它需要编写类似solr的配置文件。它非常简单明了

您可以使用QCubed()框架来实现这一点。程序如下所示:

  • 安装QCubed()
  • 在数据库上执行代码生成。(http://www.thetrozone.com/php-code-generation-qcubed-eliminating-sql-hassle)
  • 将数据库从世界其他地方脱机,以便一次只运行一个操作
  • 现在编写一个脚本,从数据库的所有表中读取所有行,并在所有对象上使用getJson来获取json。然后,您可以使用数据转换为数组并将其推送到mongoDB中
    如果您使用的是Ruby,也可以尝试:

    这是一种超级简单的方法,可以将数据从RDB转换到MongoDB,而不会丢失任何东西

    Mongify将读取您的mysql数据库,为您构建一个翻译文件,您所要做的就是映射您希望数据转换的方式

    它支持:

    • 自动更新ID(到BSON ObjectID)
    • 更新引用ID
    • 类型转换值
    • 将表嵌入到其他文档中
    • 保存过滤器之前(允许手动更改数据)
    • 还有更多
    更多信息,请访问:

    主页上还有一个简短的5分钟视频,向您展示这是多么简单。

    的免费版本可以自动为您完成这项工作

    它可以连接到两个数据库并执行导入

    尝试以下操作: 使用简单的r2n映射将MySQL转储自动转换为Mongo更新。

    以下是我使用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);
    });
    
    var mysql=require('mysql'); var MongoClient=require('mongodb')。MongoClient; 函数getMysqlTables(mysqlConnection,回调){ mysqlConnection.query(“在Table_Type='BASE Table';”中显示完整的表”,函数(错误、结果、字段){ 如果(错误){ 回调(错误); }否则{ var表=[]; 结果.forEach(函数(行){ for(行中的var键){ if(行hasOwnProperty(键)){ if(key.startsWith('Tables_in')){ tables.push(行[键]); } } } }); 回调(空,表); } }); } 函数tableToCollection(mysqlConnection、tableName、mongoCollection、callback){ var sql='SELECT*FROM'+tableName+';'; 查询(sql,函数(错误,结果,字段){ 如果(错误){ 回调(错误); }否则{ 如果(results.length>0){ mongoCollection.insertMany(结果,{},函数(错误){ 如果(错误){ 回调(错误); }否则{ 回调(空); } }); }否则{ 回调(空); } } }); } MongoClient.connect(“mongodb://localhost:27017/importedDb,函数(错误,db){ 如果(错误)抛出错误; var MysqlCon=mysql.createConnection({ 主机:“localhost”, 用户:'
    mongoimport -d dbname -u ${MONGO_USERNAME} -p ${MONGO_PASSWORD} --authenticationDatabase admin -c collectionname --jsonArray --file tablename.json