我有一个这样的csv文件:
ID Name TNumber
123 John 123456
123 Joe 789012
124 Tim 896578
124 Tom 403796
我想根据ID
列将其分为2个单独的csv文件。
我正在使用fast-csv
来解析csv和其他修改。我需要将文件分成两个(在上述情况下),然后执行其他操作。我该如何实现?
答案 0 :(得分: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`));
})
});
另外,这应该很快。