我是mongo和node的新人。我试图将一个csv上传到mongodb中。
步骤包括:
我使用'csvtojson'模块将csv转换为json并使用代码推送了它:
MongoClient.connect('mongodb://127.0.0.1/test', function (err, db) { //connect to mongodb
var collection = db.collection('qr');
collection.insert(jsonObj.csvRows, function (err, result) {
console.log(JSON.stringify(result));
console.log(JSON.stringify(err));
});
console.log("successfully connected to the database");
//db.close();
});
这段代码在csv最大为4mb的情况下可以正常工作;不仅如此,它不起作用。
我试图解决错误
console.log(JSON.stringify(err));
它回来了 {}
注意:我的是32位系统。
是否因为32位系统的文件限制为4mb?
我处于无法限制csv文件中属性的大小和编号的情况(即,代码将处理各种csv文件)。那么如何处理呢?我有可用的模块吗?
如果您在将csv解析为JSON时没有问题(大概不是),那么也许可以将列表大小限制为insert
。
如我所见,该.csvRows
元素是一个数组,因此与其一次发送所有元素,不如将其切成薄片并在插入调用中批处理这些元素,不如一次发送。元素的数量似乎是问题的原因,而不是大小。将数组拆分为几个插入而不是1个应该有帮助。
尝试500,然后1000,依此类推,直到找到满意的中度。
编码方式:
var batchSize = 500;
for (var i=0; i<jsonObj.csvRows.length; i += batchSize) {
var docs = jsonObj.csvRows.slice(i, i+(batchSize -1));
db.collection.insert( docs, function(err, result) {
// Also don't JSON covert a *string*
console.log(err);
// Whatever
}
}
并这样做chunks
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句