【问题标题】:NODE.JS: FATAL ERROR- JS Allocation failed - process out of memory, while parsing large excel filesNODE.JS:致命错误 - JS 分配失败 - 进程内存不足,同时解析大型 excel 文件
【发布时间】:2014-02-21 06:53:59
【问题描述】:

我正在使用 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 并在读取一行时保存值?

【问题讨论】:

    标签: excel node.js mongodb


    【解决方案1】:

    我之前也遇到过类似的问题。我需要从 txt 文件中读取一个巨大的 JSON 对象,但该进程因内存不足而被终止。对于这个问题,我的解决方案是把这个大文件分成2个文件。

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

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

      node --max-old-space-size=8192 server.js 
      
    2. 如果 #1 不起作用,请尝试使用此库逐行读取 xlsx 文件:https://github.com/ffalt/xlsx-extract

    3. 如果 #1、#2 不起作用,请尝试 https://github.com/extrabacon/xlrd-parser

    【讨论】:

    • #1 不起作用,因为我只想使用最多 3gb 的 RAM #2 需要 1) 安装 .NET Framework 2.0 SDK,2) 安装 Microsoft Visual Studio 2005,我没有想在云服务器 #3 上做的事情在 Windows 上不起作用。有人知道如何在 Windows 上使用/安装模块“xlrd-parser”吗?
    • 谢谢,模块“xlsx-extract”在安装了 Visual Studio 的情况下运行良好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-23
    • 2019-06-28
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    • 2016-12-19
    • 1970-01-01
    相关资源
    最近更新 更多