0

大家好,我是新来的,我很困惑我现在如何使用 readstream 和 write stream 我试过这个(我使用这个库https://www.npmjs.com/package/csv-parse

    fs.createReadStream(path.join(__dirname,"../demofile/Customers.csv"))
        .pipe(parse(options))
        .on('data', function(csvrow) {
            console.log(csvrow);
            //do something with csvrow
            output.push(csvrow);        
        })
        .on('end',function() {
        //do something wiht csvData
        console.log(csvData);
        });

但我认为读取和写入 csv-parse 流的方式不正确,任何人都可以建议我如何使用上面的代码进行读取和写入。基本上我想读取一个csv文件并将其写入另一个csv文件使用读写流的原因是因为我的文件大小约为2gb

4

1 回答 1

4

以下代码使用流添加新列。我使用的文件大约是 500MB,最大使用的 RAM 小于 50MB。请注意,csv-parse我导入csv的实际上是一个“伞”模块,其中包括csv-parsecsv-generate和.stream-transformcsv-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);
于 2019-01-04T12:32:39.000 回答