gpt4 book ai didi

node.js - NodeJS csv 数据转储到 s3 对象

转载 作者:太空宇宙 更新时间:2023-11-03 21:51:20 26 4
gpt4 key购买 nike

我是 AWS、JavaScript 的初学者,我正在尝试在 AWS Lambda 函数中使用以下代码从 Oracle 数据库获取数据。

 let conn = await this.getConnection(userName, password, connectString);
let results = await conn.execute(query, {}, {});
let data = results.rows.map(el => `${el}`);
console.log(data);

这在控制台上给出了以下输出

[ "TEST_SESSION_0,121,High,Warning,7",
"TEST_SESSION_2,122,High,Error,11",
"TEST_SESSION_3,123,Low,Error,431,
"TEST_SESSION_4, ASMT_,103,Low,Fatal,10" ]

现在,我的目标是将此输出转换为 CSV 数据流,然后上传到 S3 存储桶对象 output.csv 进行进一步处理。我在下面尝试转换成CSV,但使用 AWS SDK 和所需的 NPM 模块将其连接回 S3 时遇到问题,当我测试下面的代码时,我没有收到任何错误,但同时没有看到数据上传到S3。不确定我哪里做错了,感谢任何帮助..

stringify(results.rows, function(err, output){
if(err){
console.log('some error occured '+ err);
} else {
console.log(output); //gives me below output
//TEST_SESSION_0,121,High,Warning,7
//TEST_SESSION_2,122,High,Error,11
//TEST_SESSION_3,123,Low,Error,431
//TEST_SESSION_4, ASMT_,103,Low,Fatal,10

下面的代码是将 CSV 输出上传到 S3 对象

     var param = {
Bucket: 'Test-Bucket',
Key: 'output.csv',
Body: new Buffer(fs.createWriteStream(output)) //can i pass the csv data that i captured above in "output"?
};
s3bucket.putObject(param, function(err, output){
if(err) console.log(err);
else console.log(output);
});
}
})

最佳答案

我首先会分离出 S3 上传的代码,并自行处理该部分 - 尝试让它在包含字符串文本的存储桶中创建一个文件。

putObject 函数需要一个 Buffer 作为 Body 参数。要从字符串构造它,您可以使用 Buffer.from方法:

var AWS = require('aws-sdk');

var output = 'This is a test';
var myBody = Buffer.from(output);

var param = {
Bucket: 'Test-Bucket',
Key: 'output.csv',
Body: myBody
};

var s3bucket = new AWS.S3({ signatureVersion: 'v2' });
s3bucket.putObject(param, function(err, output) {
if(err) {
console.error(err);
} else {
console.log(output)
}
});

一旦该部分完美运行,请将其插入其他代码并将输出更改为 CSV 文件的内容。

注意您将需要设置以下环境变量:

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY

关于node.js - NodeJS csv 数据转储到 s3 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55206407/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com