Javascript sqlite3中的批插入-内存问题

Javascript sqlite3中的批插入-内存问题,javascript,html,node.js,memory,sqlite,Javascript,Html,Node.js,Memory,Sqlite,我有两个数据库,我正在从nodejs读取/更新它们。一个是HTML格式的新闻文章,另一个用于存储相同文章的纯文本版本。我目前有一个脚本(下面的代码),它从HTMLDB中读取,提取干净的文本,并将其保存到文本db中 我遇到的问题是,虽然这个脚本只适用于有限的行数,但当我尝试在整个数据库上运行它时,它最终会占用整个内存(+7GB) 我注意到所有的插入实际上都是在最后一起执行的,所以我认为我需要在运行时执行插入,以便在仍然从HTMLDB读取行的同时释放内存 有什么办法吗?谢谢 /** * Proc

我有两个数据库,我正在从nodejs读取/更新它们。一个是HTML格式的新闻文章,另一个用于存储相同文章的纯文本版本。我目前有一个脚本(下面的代码),它从HTMLDB中读取,提取干净的文本,并将其保存到文本db中

我遇到的问题是,虽然这个脚本只适用于有限的行数,但当我尝试在整个数据库上运行它时,它最终会占用整个内存(+7GB)

我注意到所有的插入实际上都是在最后一起执行的,所以我认为我需要在运行时执行插入,以便在仍然从HTMLDB读取行的同时释放内存

有什么办法吗?谢谢

/**
 *  Process all articles; extract text from html and save to database.
 */
dbText.run("CREATE TABLE IF NOT EXISTS articles (url string primary key, headline text, subhead text, copy text)");
dbHtml.each("SELECT * FROM articles", function(err, row) {
  processArticle(row.url, row.content, dbText);
});

/**
 *  Function called on each article.
 */
function processArticle(url, content, dbText) {
  $ = cheerio.load(content);
  var headlineElem = $(...);
  var subheadElem = $(...);
  var copyElem = $(...);

  var headlineText = headlineElem.length > 0 ? headlineElem.text() : "";
  var subheadText = subheadElem.length > 0 ? subheadElem.text() : "";
  var copyText = copyElem.length > 0 ? getTextWithSpaces(copyElem.get(0)) : "";

  if (!headlineText) log(url, "Headline is emtpy.");
  if (!subheadText) log(url, "Subhead is emtpy.");
  if (!copyText) log(url, "Copy is emtpy.");

  var statement = dbText.prepare("INSERT OR REPLACE INTO articles VALUES (?, ?, ?, ?)");
  statement.run(url, headlineText, subheadText, copyText);
  statement.finalize();
}