微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

NODE.JS:FATAL ERROR- JS分配失败 – 解析大型excel文件时,内存不足

我正在使用nodejs来解析xlsx文件,并使用模块“jsxlsx_async”,并将值存储在mongodb中。
我的代码

xlsx(file,function(err,wb){
        if (err){
            //handling err
        }
        //get data array 
        wb.getSheetDataByName('Sheet1',data){
            if (err){
                //handling err
            }
            //handling data
            console.log(data);
        });
    });

使用:Nodejs:v0.10.25,MongoDB:v2.2.6,
操作系统:win8,RAM:6GB

我的步骤:
1.读取上传的xlsx文件并将这些读取值保存到JS对象中。
2.通过迭代JS对象上的值,将读取的值保存为mongodb集合。

这可以用较小的xlsx文件正常工作,但是我想解析大于50MB的xlsx文件

我的问题是我将整个xlsx值存储在单个JS对象中。
请为解决方案提供一些更好的想法。
有没有更好的方法来读取xlsx行,并一次保存一行行被读取?

解决方法

之前我有类似的问题。我需要从txt文件中读取一个巨大的JSON对象,但是由于内存不足而导致进程死机。关于这个问题,我的解决方案是把这个巨大的文件分成2个文件

关于你的问题,我的建议是:

>尝试增加v8引擎的内存限制。 https://github.com/joyent/node/wiki/FAQ示例(8192表示8GB):

node --max-old-space-size=8192 server.js

>如果#1不起作用,请尝试使用此lib:https://github.com/ffalt/xlsx-extract逐行阅读xlsx文件
>如果#1,#2不工作,请尝试https://github.com/extrabacon/xlrd-parser

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐