节点 CSV 解析器

Node CSV Parser

我正在使用节点包 'csv',并且我 运行 在该包最明显的用例中遇到了问题,我不确定如何继续。包回购:https://github.com/wdavidw/node-csv

我需要, 1:读入一个csv文件,对每一行进行一次运算。 2:整个csv文件读取完毕后,执行一个动作,将结果写入一个新的csv文件。

我卡在第一部分了。这是将一堆(看似不一致的)示例连接在一起后得到的结果。

var fs = require('fs');
var csv = require('csv');
var transform = require('stream-transform');

var outputMap = {};

var baseStream = fs.createReadStream(__dirname + '/locationTaxonomy.csv');


baseStream
 .pipe(csv.parse())
 .pipe(csv.transform(function(record){
  outputMap[record[2]] = record;
  return record; 
 }));

前面只通过csv文件的前~16行,然后就停止了。 如果我将 baseStream 直接通过管道传输到 process.stdout,则文件将被完整读取。关于如何完成这个看似微不足道的任务有什么想法吗?

转换流处理程序中的 return 语句导致流停止。 删除它允许读取完整的 csv 文件

var fs = require('fs');
var csv = require('csv');
var transform = require('stream-transform');

var outputMap = {};

var baseStream = fs.createReadStream(__dirname + '/locationTaxonomy.csv');


baseStream
 .pipe(csv.parse())
 .pipe(csv.transform(function(record){
  outputMap[record[2]] = record;
  // return record;  // remove this line 
 }));