首页 > 解决方案 > 如何使用nodejs读取大文本文件并将每个单词保存到mongodb中?

问题描述

我必须有一个大文本文件,其中有很多简单文本形式的注释,我需要做的是从该文件中读取所有文本,并单独分隔每个单词并计算它们在文件中的出现次数。但由于文件很大,无法将所有数据保存在一个变量中。它只是给了我错误。

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory

代码:

var userModel = require("./user");
var filename = "./test.txt";
const readStream = fs.createReadStream(filename);
readStream.on("data", function(chunk) {
    output += eol.auto(chunk.toString("utf8"));
});
readStream.on("end", function() {
    console.log("finished reading", output);
// mongo code goes here
});

例子 :

文件test.txt有文字“我可爱的帕特有她这一代人的伟大声音之一”。所以它应该是这样的:

{
 "My" : 1,
 "lovely" : 1,
 "Pat" : 1,
 "has" : 1,
"one" : 1,
"of" : 2,
"the" : 1,
"GREAT" : 1,
"voices" : 1,
"her" : "1",
"generation" : 1
}

标签: javascript

解决方案


不要一次读取所有文件。尽可能早地处理数据。

在您的事件处理程序中:

readStream.on("data", function(chunk) {

尽可能解析数据,并立即插入 mongodb。

如果您无法理解该块,请将其保存在某个地方,然后再尝试下一个块。


推荐阅读