我想这是一个太具体的问题,但我真的很困惑。
我有一个大的csv文件(2.7 GB),其中包含大约6百万的产品信息。我试图解析数据并将其插入Postresql。我正在使用Sequelize for ORM和csv-parse
模块来解析文件。
当我尝试运行我的代码时出现JavaScript heap out of memory
错误。我正在使用流来读取和解析csv文件,所以我不明白为什么它会占用太多内存?我的代码段是否存在导致此错误的问题?或者任何更好的方式来实现我想要做的事情?任何帮助将不胜感激。
const csvParser = require('csv-parse'); // https://github.com/wdavidw/node-csv-parse
const Product = require('../models').Product;
const options = {
delimiter: '|',
trim: true,
relax: true
}
const parser = csvParser(options);
fs.createReadStream('path/to/csv', {encoding: 'utf8'})
.pipe(parser)
.on('data', row => {
processPlainRow(row);
})
.on('end', () => {
console.log('ended');
})
.on('error', error => {
console.log('error: ', error);
})
.on('close', error => {
console.log('stream closed');
})
function processPlainRow(row) {
let productToInsert = parsedRow(row);
Product
.create(row)
.then(product => {
// do nothing at all
})
.catch(error => {
console.log(error);
});
}
function parsedRow(row) {
return {
name: row['name'],
price: row['price'],
// ... goes on
};
}