首页 > 解决方案 > 读取数百万个小文件并使用 Nodejs 插入 mysql

问题描述

我尝试了很多方法,但找不到一种有效且高性能的方法来打开文件夹中的数百万个文件并将其内容插入到带有 nodejs 的数据库中。

由于 SQL 查询,它需要内存高效和异步。

有什么见解吗?

标签: mysqlnode.jsasynchronousdata-science

解决方案


我猜您不是在创建应用程序,而是更多的是一次性迁移,对吗?

如果您打算让 NodeJS 一次读取所有内容并使用简单的 JS 循环插入数据库,您可能会遇到错误。

  1. 您的数据库将因内存不足而挂起/由于一次连接过多而阻塞。
  2. NodeJS 是轻量级的。它只读取“数百万个文件”

我对这个模糊问题的看法是你需要控制插入:

您可以使用https://caolan.github.io/async/v3/之类的模块来帮助您控制哪些调用是异步的或同步的,使用async.eachSeries()async.waterfall()

读取文件可以使用 Nodejs 的 fs 模块,可以在这里找到https://www.tutorialspoint.com/nodejs/nodejs_file_system.htm

如果您无法控制 NodeJS 正在读取的文件,您可以。

  1. 读取一些文件,将其存储在成批的 JSON 数组或对象中
  2. 使用上述方法异步/同步插入它们。

此实现完全取决于您如何嵌套每个读取和写入。

干杯


推荐阅读