使用节点导出大型数据集时出现内存问题



导出一定数量的行时遇到内存限制。我得到了一个节点堆内存不足错误。目前我可以导出大约200万行,相当于一个150 MB的csv文件。然而,我看到过一些人用node导出gb数据的例子。

这是函数的相关部分,其中内存使用量增加到节点崩溃点:

const { Pool } = require("pg");
...
pool.query(queryData, (err, res) => {
if (err) {
app.logger(`Unable to query ${externalDataSource.name} PS database with query "${queryData.text}"`,
"error", modelLogType, modelUserName, modelFileName, __line);
reject(`Unable to query ${externalDataSource.name} database with specified query`);
} else if (res && res.rows) {
resolve(res.rows);
}
pool.end();
});

我见过一些库,比如pg流和其他一些库,但我不确定什么是最好的"现代的";解决这个问题的方法是。让数据库生成csv并通过它更好吗?还是用node和";块";?

您可以如下增加节点内存限制:

node --max-old-space-size=1024 your_script.js #increase to 1gb
node --max-old-space-size=2048 your_script.js #increase to 2gb
node --max-old-space-size=3072 your_script.js #increase to 3gb
node --max-old-space-size=4096 your_script.js #increase to 4gb
node --max-old-space-size=5120 your_script.js #increase to 5gb
node --max-old-space-size=6144 your_script.js #increase to 6gb
node --max-old-space-size=7168 your_script.js #increase to 7gb
node --max-old-space-size=8192 your_script.js #increase to 8gb

最新更新