3

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

4

1 回答 1

4

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

于 2015-07-23T05:52:10.113 回答