节点CSV解析器

时间:2015-07-22 21:37:32

标签: node.js csv filestreams

我正在使用节点包'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,则在完成时读取该文件。关于如何完成这个看似微不足道的任务的任何想法?

1 个答案:

答案 0 :(得分:3)

转换流处理程序中的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 
	}));