我想下载AWS DynamoDB数据到Excel,以便在本地处理数据。但是,我还没有以完美的CSV格式获得数据。
我所做的:我使用了一个Node.js应用程序,它运行在AWS Lambda服务中来连接DynamoDB数据库,另外,我还可以从DynamoDB中查询数据,然后将其转换为CSV格式,如下所述:
const AWS = require("aws-sdk");
AWS.config.update({ region: "us-east-1"})
const dynamo = new AWS.DynamoDB.DocumentClient({apiversion: "2012-08-10"});
exports.handler = async (event, context) => {
let body;
const headers = {
"Content-Type": "text/csv",
'Content-disposition': 'attachment; filename=testing.csv'
};
var params = {
KeyConditionExpression: 'dataId = :id',
ExpressionAttributeValues: {
':id': event.pathParameters.id,
},
TableName: "Table1",
};
body = await dynamo.query(params).promise();
//-----------------------------------
// convert json to csv
const items = body.Items
const replacer = (key, value) => value === null ? '' : value
const header = Object.keys(items[0])
let csv = [header.join(','),
...items.map(row => header.map(fieldName => JSON.stringify(row[fieldName], replacer)).join(','))
].join('\r\n')
body = JSON.stringify(csv);
return {
body,
headers,
};
};
上面的解决方案是可行的,但是输出并不完美;下面显示了一个示例(请注意,有三列:相对湿度、水温和气温):
“相对湿度、水温、气温\r\n26.123206154221034、21.716873058693757、23.859491598934557\r\n26.966163183232673、18.09642888420125、21.47952617547989\r\n33.79030978475366、18.995791668472204,17.451627574004128\r\n40.6641803491319,19.89060168145951,17.61247262137161”(英文)
但是,我希望输出如下所示:
相对湿度,水温,空气温度18.995791668472204、17.451627574004128、40.6641803491319、19.89060168145951、17.61247262137161、17.451627574004128、17.61247262137161、17.61247272004137161、17.612447272004137161、17.612447272004137161、17.612
我将感谢任何关于如何实现这一点的指南。注意,我已经尝试了this,但数据正在以json格式导出到S3。
1条答案
按热度按时间ax6ht2ek1#