我尝试使用axios
从AWS S3获取csv文件的内容,并使用csv-parser
it解析它,然后将解析后的数据存储到本地数据库。由于bucket/file被设置为public,我很确定在执行请求时不需要包括bucketName、key、access/security key。现在我能够获取csv文件的内容,但它没有被解析。首先是所有标识符,然后是每个记录的所有值,用新行分隔,类似于以下内容:
taskID,status,lastUpdate
1,ongoing,2023-01-01
2,completed,2023-01-02
字符串
我尝试使用csv解析器,但我不知道我错过了什么,我似乎无法显示错误。以下是我到目前为止所做的:
const fs = require("fs")
const csvParser = require("csv-parser")
const axios = require("axios")
async function parseCSVFile(filePath) {
let parsedData = []
axios.get(filePath).then(function(response) {
let csvData = response.data
console.log(csvData);
csvParser(csvData, { headers: true })
.on('data', function(data) {
console.log('asdasd');
parsedData.push(data)
})
.on('end', function() {
console.log('CSV data parsed', parsedData);
})
.on('error', function() {
console.log("Error parsing CSV data");
})
})
}
型
我最初尝试使用fs,当然它工作,但只是因为我试图解析的文件是在本地找到的。我的csvData
有一个值,但它是纯文本的,但它没有被推送到parsedData
1条答案
按热度按时间klh5stk11#
csv-parser
与streams
一起工作,streams
通过管道传输给它,因此它不接受字符串作为参数,就像在代码中一样,只有选项对象,这就是它不工作的原因。因此,将axios响应转换为一个流:
字符串
然后将响应流通过管道传输到csv解析器:
型
试试这个:
型