我正在使用nodejs使用模块“jsxlsx_async”解析xlsx文件,并且值将存储在mongodb中。
我的代码:
xlsx(file, function(err,wb){
if (err){
//handling err
}
//get data array
wb.getSheetDataByName('Sheet1', function(err,data){
if (err){
//handling err
}
//handling data
console.log(data);
});
});
使用:Nodejs:v0.10.25,MongoDB:v2.2.6,
操作系统:win8,内存:6GB
我的步骤:
1.读取上传的xlsx文件并将读取的值保存到JS对象中。
2.通过迭代JS对象上的值,将读取的值保存到mongodb集合中。
这适用于较小的 xlsx 文件,但我想解析大于 50MB 的 xlsx 文件。
我的问题是我将整个 xlsx 值存储在单个 JS 对象中。
请提供一些更好的解决方案的想法。
有没有更好的方法按行读取 xlsx 并在读取一行后保存值?
我以前也遇到过类似的问题。我需要从 txt 文件中读取一个巨大的 JSON 对象,但该进程因内存不足而被终止。对于这个问题,我的解决方案是把这个大文件分成2个文件。
针对你的问题,我的建议是:
-
尝试增加 v8 引擎的内存限制。https://github.com/joyent/node/wiki/FAQ https://github.com/joyent/node/wiki/FAQ示例(8192 表示 8GB):
node --max-old-space-size=8192 server.js
如果#1 不起作用,请尝试使用此库逐行读取 xlsx 文件:https://github.com/ffalt/xlsx-extract https://github.com/ffalt/xlsx-extract
如果#1、#2 不起作用,请尝试https://github.com/extrabacon/xlrd-parser https://github.com/extrabacon/xlrd-parser
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)