mysql - 读取数百万个小文件并使用 Nodejs 插入 mysql
问题描述
我尝试了很多方法,但找不到一种有效且高性能的方法来打开文件夹中的数百万个文件并将其内容插入到带有 nodejs 的数据库中。
由于 SQL 查询,它需要内存高效和异步。
有什么见解吗?
解决方案
我猜您不是在创建应用程序,而是更多的是一次性迁移,对吗?
如果您打算让 NodeJS 一次读取所有内容并使用简单的 JS 循环插入数据库,您可能会遇到错误。
- 您的数据库将因内存不足而挂起/由于一次连接过多而阻塞。
- NodeJS 是轻量级的。它只读取“数百万个文件”
我对这个模糊问题的看法是你需要控制插入:
您可以使用https://caolan.github.io/async/v3/之类的模块来帮助您控制哪些调用是异步的或同步的,使用async.eachSeries()
或async.waterfall()
读取文件可以使用 Nodejs 的 fs 模块,可以在这里找到https://www.tutorialspoint.com/nodejs/nodejs_file_system.htm
如果您无法控制 NodeJS 正在读取的文件,您可以。
- 读取一些文件,将其存储在成批的 JSON 数组或对象中
- 使用上述方法异步/同步插入它们。
此实现完全取决于您如何嵌套每个读取和写入。
干杯
推荐阅读
- microsoft-graph-api - 在 Microsoft Graph API 中处理用户特定的共享日历 ID
- python - 使用 pandas 在一天内获取 10 分钟的索引
- vb.net - 无法分配角色 discord.net
- lua - 我在“...”附近收到错误意外符号错误我已将其范围缩小到这里的某个地方
- terminal - 终端:如何从硬盘驱动器上永久删除文件
- ruby-on-rails - 如何使用 docker & ansible ROR 部署和运行捆绑安装?
- kotlin - 在 Kotlin 中,var s: String = "hello" 和 var s = "hello" as String 有什么区别?
- bash - 在 Bash 脚本中并行使用 Ping
- virtualbox - Minikube 不能在 VirtualBox 上运行
- c# - 按 Enumerable 列表排序,没有给出想要的结果