【发布时间】:2019-07-12 08:48:32
【问题描述】:
我需要从 Geojson 文件中获取数据并将其中的一些插入到数据库中。 问题是:文件是 2.4Gb,所以 Node.js 不能那样读取它。
我尝试使用一些 json 流模块但没有成功 (big-json) (stream-json)。 模块需要一个对象数组,然而,geojson 只是一个对象,里面有一个对象数组。
模块期望:
[
{
'name': '',
'hello': ''
},
{
'name': '',
'hello': ''
},
...thousands of objects
]
但我有:
{
'type':'FeatureCollection',
'features':[ ...thousand of objects... ]
}
我尝试使用 stream-json :
const fs = require('fs')
const {parser} = require('stream-json')
const {chain} = require('stream-chain')
const {pick} = require('stream-json/filters/Pick')
const {streamValues} = require('stream-json/streamers/StreamValues')
const pipeline = chain([
fs.createReadStream('myHugeFile.json'), //2.4Gb
parser(),
pick({filter: /^\d+\.features\.\d+/}),
streamValues()
])
pipeline.on('data', (data) => {
console.log(data)
})
pipeline.on('end', () => {
console.log(`Done`)
})
它永远不会转到on('data')。
我想获取 'features' 数组中的所有特征对象。
【问题讨论】: