【问题标题】:reading csv in nodejs and creating new file for each line [duplicate]在nodejs中读取csv并为每一行创建新文件[重复]
【发布时间】:2018-09-23 03:48:13
【问题描述】:

我需要读取一个 CSV 文件,遍历每一行,创建该行的新文件并删除该行。到目前为止,我已经这样做了

    var fs = require("fs"); // module
    var glob = require("glob");// helps to find file from globally using path
    var path = require("path");

    glob.sync(path.join(__dirname, "Database.csv")).forEach(function(csv_filename) {
    if (!(/_new\.csv$/.test(csv_filename))) {
    fs.readFile(csv_filename, "utf8", function(err, data) {
        if (err){ // if there is some mistakes
            console.log(err)
        }else{
            let stringTotal="";
            var arrayEachLines = data.split("\n");
          /*  arrayEachLines.forEach(function(line){    
            stringTotal=stringTotal+line+"\n";
                            */
            var o={};

            var i;
            var row;
                for (i=0; i<arrayEachLines.length; i++){
                o[i]=arrayEachLines[i];
                o[i]=o[i].replace(o[row],"");

            }
            arrayEachLines.push(o);

            console.log(o);


            fs.writeFile(csv_filename.replace(/Excel\.csv_original/, "Excel.csv_updated").replace(/\.csv$/, "_new.csv"), o[i], "utf8", function(err) {
                if (err) {
                    console.log(err);
                } else {
                    console.log(csv_filename + " converted");
                }
            });
        }

    });
}});

数据库 csv 包含

  a,"""blue""",11,3
  ba,"""blue""",2,4
  c,"""blue""",0,5

我希望系统读取第一行,使用第一行的字段创建一个新文件,删除该行并读取第二行执行相同的操作 任何建议都将受到高度赞赏

谢谢

【问题讨论】:

  • this 可能会有帮助

标签: javascript node.js


【解决方案1】:

创建一个事件流以使用event-stream 发出每一行并写入新的 csv 文件。这样就可以了

const fs = require('fs');
const es = require('event-stream');
const path = require("path");

let lineCount = 0;
let csvPath = path.join(__dirname, "Database.csv");
fs.createReadStream(csvPath)
    .pipe(es.split())
    .pipe(es.mapSync((line) => {
        lineCount += 1;
        let filePath = path.join(__dirname, `line${lineCount}.csv`)
        fs.writeFileSync(filePath , line);
    }).on('error', (err) => {
        console.log('Error while reading file.', err);
    }).on('end', () => {
        console.log('Read entire file.')
    }));

【讨论】:

  • 谢谢伙计,这就是我们想要的
猜你喜欢
  • 2018-08-24
  • 1970-01-01
  • 1970-01-01
  • 2020-03-16
  • 2015-03-16
  • 2021-08-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多