node.js - 使用 600 MB 及以上的大型 JSON 文件处理 Node js 的有效方法是什么?
问题描述
使用 600 MB 及以上的大型 JSON 文件处理 Node js 的有效方法是什么?
我的伙伴从他的 REST API 中给了我非常大的 JSON 文件。600mb、1000mb
其结构如下
{ nameid1:[list id,....], nameid2:[list id,....], }
[list id,....] - 一个有ID的数组最多可以有上亿条记录。
现在要使用这些文件,我使用以下操作序列。
我把它保存到硬盘
使用 sed 命令,从单行文件中,我将其设为多行
例子
exec (`sed -i 's /', '/', '\n/g' file.json)
- 我使用 readline 直接处理文件
我尝试使用 JSONStream 但它导致 FATAL ERROR: CALL_AND_RETRY_LAST 分配失败 - JavaScript heap out of memory
function getStream() {
let jsonData = __dirname + '/jsonlarge/file.json',
stream = fs.createReadStream(jsonData, {
encoding: 'utf8'
})
parser = JSONStream.parse('*');
stream.pipe(parser)
parser.on('data', (data) => {
console.log('received:', data);
});
}
示例结构 json 文件
{"Work":"12122001","name":"Regist","world":[{"name":"000000","point":"rfg","Content":["3202b9a3fba","121323","2343454","45345543","354534534"]}, {"name":"000000","point":"rfg","Content":["3202b","121323","2343454","45345543","354534534"]}, {"name":"000000","point":"rfg","Content":["320","121323","2343454","45345543","354534534"]}]}
也许有人知道使用此类文件的更快方法。
谢谢
解决方案
推荐阅读
- angular - 下载 PDF 文件、Angular 6 和 Web API
- jquery - 如何在使用 HTML、CSS 和 jQuery 单击简单的 SVG 图标时换掉它?
- javascript - 此函数如何在缺少参数的情况下工作
- javascript - Web 浏览器是 JavaScript 运行时吗?
- sql-server - 在 Microsoft Server SQL 中创建列名数组
- sql - 如何将“加入选择语句结果”更改为 laravel 雄辩?
- wordpress - 仅为来自其他平台的登录用户启用 wordpress 中的文件下载?
- mysqli - 缺少 mysqli 扩展(Windows 10、PHP 7.17、MAMP、)
- swift - 迅捷型
意义 - r - R Dplyr 从线性模型中提取估计并将它们用于可变调整突变 - 用于多列