Следующий код использует потоки для добавления нового столбца.Файл, который я использовал, занимал около 500 МБ, а максимальный объем используемой оперативной памяти - менее 50 МБ.Обратите внимание, что вместо csv-parse
я импортировал csv
, который на самом деле является «зонтичным» модулем, включающим csv-parse
, csv-generate
, stream-transform
и csv-stringify
.
const fs = require('fs');
const csv = require('csv');
const path = require('path');
const EOL = require('os').EOL;
FILE = path.join(__dirname, 'IN.csv');
NEW_FILE = path.join(__dirname, 'OUT.csv');
const readStream = fs.createReadStream(FILE);
const writeStream = fs.createWriteStream(NEW_FILE);
const parse = csv.parse();
const transform = csv.transform((row, cb) => {
row.push('NEW_COL');
result = row.join(',') + EOL;
cb(null, result);
});
readStream.pipe(parse).pipe(transform).pipe(writeStream);