【问题标题】:split csv file into multiple csv files based on a column value using fast-csv in nodejs在nodejs中使用fast-csv根据列值将csv文件拆分为多个csv文件
【发布时间】:2019-01-13 23:40:48
【问题描述】:

我有一个这样的 csv 文件:

ID   Name   TNumber
123  John   123456
123  Joe    789012
124  Tim    896578
124  Tom    403796

我想根据 ID 列将其拆分为 2 个单独的 csv 文件。

我正在使用fast-csv 对 csv 进行解析和其他修改。我需要将文件一分为二(在上述情况下),然后执行其他操作。我怎样才能做到这一点?

【问题讨论】:

    标签: javascript node.js csv


    【解决方案1】:

    这行得通:

    const fs = require('fs');
    const fastCsv = require('fast-csv');
    
    const datas = {}; // data['123'] = CSV data filtered for id = 123
    const options = {headers: true, delimiters: '\t'}; // relative to your CSV usage
    
    fastCsv
        .fromPath('./data.csv', options)
        .on('data', d => {
            if (!datas[d.id]) datas[d.id] = [];
            datas[d.id].push(d)
        })
        .on('end', () => {
            Object.keys(datas).forEach(id => {
                // For each ID, write a new CSV file
                fastCsv
                    .write(datas[id], options)
                    .pipe(fs.createWriteStream(`./data-id-${id}.csv`));
            })
        });
    

    此外,这应该很快。

    【讨论】:

    • 这看起来非常有用。不幸的是,当我尝试它时,它会输出一个名为“data-id-undefined.csv”的 csv,它与上面的相同选项卡 del 文件等效。也尝试用逗号分隔。在 FastCsv 中,除了 fromPath 更改为 parseFile 之外,还有什么可以阻止它从 2020 年开始在 Node 12.16.1 下工作?
    猜你喜欢
    • 1970-01-01
    • 2015-09-03
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-04
    • 1970-01-01
    相关资源
    最近更新 更多