如何使用Node JS向CSV文件添加新列

巴格瓦特·兰德

我已经使用node.js npm软件包fast-csv尝试了此操作,但是没有解决方案,我可以成功读取csv文件,现在需要在现有csv文件中添加新列。

我的问题:

如何在csv文件中添加新列?如何更新csv?

var csv = require("fast-csv");
var fs = require('fs');
var stream = fs.createReadStream("file1.csv");
var service = 'https://maps.googleapis.com/maps/api/distancematrix/json?origins=53.78943,-0.9985&destinations=53.540867,-0.510699&mode=driving&language=en-US';
var source = [];
var dest = [];
var distance = require('google-distance');

distance.apiKey = '************';
var i = 1;
csv
    .fromStream(stream, { headers: true })
    .on("data", function(data) {
        //get source and distance array
        source = data.SourceLatLong;
       dest = data.DestBREPLatLong;
        //print source and destinatoon
        console.log(source);
        console.log(dest);
        distance.get({
                // index: i,
                origin: source,
                destination: dest,
                units: 'imperial'
            },

            function(err, map_data) {

                if (err) return console.log(err);
                //console.log(map_data);
                //console miles of aff
                console.log('source lat long ' + ':' + data.SourceLatLong + ' , ' + 'Dest lat long' + ':' + data.DestBREPLatLong + ',' + ' distance ' + ':' + map_data.distance + ' ' + i++);

            });
    })

.on("end", function() {
    console.log("done");
});

在上面的程序中,我使用filecsv file1.csv,从中获取两列SourceLatLongDestLatLong然后以英里为单位计算距离。现在,我需要在文件.csv中添加新的里程列

拼音

使用csv-parser软件包而不是fast-csv,并使用json2csv将json解析为csv。

您要做的是使用csv-parser将csv的每一行转换为json,将新字段添加到结果json对象中,针对每一行执行此操作,将结果放入数组中,然后使用json2csv将其转换为csv包。

这是代码:

var csv = require('csv-parser');
var fs = require('fs');
var json2csv = require('json2csv');
var dataArray = [];

fs.createReadStream('your-original-csv-file.csv')
  .pipe(csv())
  .on('data', function (data) {
    data.newColumn = newColumnValue;
    dataArray.push(data);
  })
  .on('end', function(){
    var result = json2csv({ data: dataArray, fields: Object.keys(dataArray[0]) });
    fs.writeFileSync(fileName, result);
  });

fs.writeFileSync仍然会覆盖原始文件,因此您也可以将其保存到原始csv文件中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章