Node.js модуль node-csv — работа с локальным CSV-файлом

#javascript #node.js #parsing

#javascript #node.js #синтаксический анализ

Вопрос:

Я пытаюсь использовать новую версию модуля узла node-csv для выполнения некоторых манипуляций с CSV. узел-csv

В прошлом я использовал perl, но на этот раз хотел бы попробовать JavaScript. У меня возникли проблемы с пониманием того, как импортировать локальный файл CSV вместо использования встроенного генератора. Документация для node-csv не показывает, как это сделать, насколько я могу судить (хотя она предоставляет пример для предыдущей версии).

Вот пример кода, который работает так, как ожидалось.

 var csv = require('csv');

var generator = csv.generate({seed: 1, columns: 2, length: 20});

var parser = csv.parse();
var transformer = csv.transform(function(data){
  return data.map(function(value){return value.toUpperCase()});
});
var stringifier = csv.stringify();

generator.on('readable', function(){
  while(data = generator.read()){
    parser.write(data);
  }
});

parser.on('readable', function(){
  while(data = parser.read()){
    transformer.write(data);
  }
});

transformer.on('readable', function(){
  while(data = transformer.read()){
    stringifier.write(data);
  }
});

stringifier.on('readable', function(){
  while(data = stringifier.read()){
    process.stdout.write(data);
  }
});
 

Я планирую использовать модуль FS, но не уверен, как передать локальный файл в функции node-csv.

 var fs = require('fs');
 

Вот пример для ПРЕДЫДУЩЕЙ версии, в которой используется совершенно другой синтаксис:

 // node samples/sample.js
var csv = require('csv');
var fs = require('fs');
csv()
.from.stream(fs.createReadStream(__dirname '/sample.in'))
.to.path(__dirname '/sample.out')
.transform( function(row){
  row.unshift(row.pop());
  return row;
})
.on('record', function(row,index){
  console.log('#' index ' ' JSON.stringify(row));
})
.on('end', function(count){
  console.log('Number of lines: ' count);
})
.on('error', function(error){
  console.log(error.message);
});
 

Есть предложения?