Nodejs/javaScript操作CSV文件
嗨,我有两个CSV文件Nodejs/javaScript操作CSV文件,javascript,node.js,csv,Javascript,Node.js,Csv,嗨,我有两个CSV文件 Spas.csv Customers.csv Spas.csv id | name ........................... 5 | Wasana spa ........................... 7 | Hot spring spa ........................... 8 | Colombo spa ........................... 10 | Sanhida spa .........
id | name
...........................
5 | Wasana spa
...........................
7 | Hot spring spa
...........................
8 | Colombo spa
...........................
10 | Sanhida spa
...........................
12 | Waruna spa
...........................
id | name | spaId
........................
1 |Hiran |5
........................
2 |Hirushi|5
........................
3 |Mishani|8
........................
4 |Chamod |12
Customers.csv
id | name
...........................
5 | Wasana spa
...........................
7 | Hot spring spa
...........................
8 | Colombo spa
...........................
10 | Sanhida spa
...........................
12 | Waruna spa
...........................
id | name | spaId
........................
1 |Hiran |5
........................
2 |Hirushi|5
........................
3 |Mishani|8
........................
4 |Chamod |12
这两个CSV文件是从MYSQL数据库导出的。
我想要的是像这样更改Customers.csv
文件的spaId
id | name | spaId
........................
1 |Hiran |1
........................
2 |Hirushi|1
........................
3 |Mishani|3
........................
4 |Chamod |5
这些新的spaId来自Spas.csv文件的行号。
示例:-id 5位于行号1处,因此编号5替换为编号1
如何在nodejs/javaScript中实现这一点。到目前为止,我所做的就是这样
var fs = require('fs')
var csv = require('fast-csv');
fs.createReadStream('spas.csv')
.pipe(csv())
.on('data',function(data){
console.log('DATA',data)
})
.on('end',function(data){
console.log("FIN",data)
})
基本上,这将控制台将每行记录为一个数组,我不知道如何同时写入CSV。尝试以下方法:
const fs = require("fs");
const csv = require("fast-csv");
async function getSpasIdMap(filePath){
return new Promise(function(resolve, reject) {
let map = {};
let count = 0;
let stream = fs.createReadStream(filePath);
let csvStream = csv({ headers:true })
.on("data", function(data){
map[data.id] = ++count;
})
.on("error", (e) => {
reject(e);
})
.on("end", function(){
resolve(map);
});
stream.pipe(csvStream);
})
}
async function computeAndWriteCustomerData(spasSource, customerSource, dest){
let spasMap = await getSpasIdMap(spasSource);
let customerStream = fs.createReadStream(customerSource);
let csvCustomerStream = csv({headers:true})
.transform(function(row) {
return `${row.name},${spasMap[row.spaId]}\n`;
});
let writableStream = fs.createWriteStream(dest);
customerStream.pipe(csvCustomerStream);
csvCustomerStream.pipe(writableStream);
}
async function main() {
await computeAndWriteCustomerData("spas.csv", "customer.csv", "my.csv");
}
main();
这不是csvfile@JKK我更新了我的问题,并输入了我已经输入的代码。