Возможно, есть лучший способ сделать это, но приведенный ниже код, безусловно, работает!
У меня есть чанки (row.length) по 20 000 на оператор вставки, которые вы можете корректировать в соответствии с вашими потребностями.
stream.pipe(parser)
parser.on('data', data =>{
row.push(data)
if (row.length === 20000) {
parser.pause()
//console.log(row.length)
db.tx('inserting-products', t => {
const insert = pgp.helpers.insert(row, cs)
t.none(insert).then(() => {
row =[]
parser.resume()
})
})
}
})
parser.on('end', () =>{
//console.log(row.length)
if(row.length != 0){
db.tx('inserting-products', t => {
const insert = pgp.helpers.insert(row, cs)
t.none(insert).then(() => {
console.log('success')
db.$pool.end()
})
})
}
if(row.length === 0) {
console.log('success')
db.$pool.end()
}
})
Пожалуйста, дайте мне знать в комментариях, если это поможет или каким-либо другим способом улучшить процесс.