我正在尝试将表从 mysql 直接导入到 mongodb,而无需任何架构更改。
我为此编写了一个小节点脚本,我的问题在于我实现它的方式。
也许我在循环中使用 mongo db insert 限制时遇到了一些限制。我认为如果反过来,这个问题就不会出现(也许不会!)
事情就是这样。mysql 表中的行超过 100,000,但是当循环命中超过 30000 时,插入项目的数量就会减少。
因此,假设使用下面提到的脚本完成导入后 mysql 表中有 100,000 个项目,我最多只能得到 37000 个左右。
我强烈怀疑要么是节点脚本/节点 mongodb 连接器,要么是脚本中的一些错误,或者最后是 mongodb 并发数据库插入的限制。
我在下面粘贴脚本。希望我能解决它。
谢谢,
var http = require('http'),
mysql = require('mysql'),
mongo = require('mongodb').MongoClient,
format = require('util').format;
var connection = mysql.createConnection({
user: "xxx",
password: "xxx",
database: "mydb"
});
connection.connect();
var query = "select * from mytable";
var mysqlrows = '';
connection.query(query, function(err,rows,fields){
if(err) throw err;
console.log(rows.length+'rows found.');
mongo.connect('mongodb://root:root@127.0.0.1:27017/mydb', function(err, db){
if (err)
throw err;
var collection = db.collection('mytable');
for(var i=0; i<rows.length;i++)
{
//console.log(JSON.stringify(rows[i]));
(function(i){
collection.insert(rows[i],function(err,docs){});
console.log(i);
})(i);
}
db.close();
});
});
connection.end();