node.js - 如何使用nodejs将过滤后的数据从dynamodb导出到csv?
问题描述
我想将过滤后的数据从 dynamodb 导出到 csv。我有一个使用名称和 ID 过滤数据的功能。现在我需要将过滤后的数据导出到 excel 中。我该如何解决这个问题?我见过这个 npm dynamodb-csv。但这并没有解决我的问题..
解决方案
我正在使用以下代码片段进行导出和导入:
const AWS = require('aws-sdk');
const dynamoDb = new AWS.DynamoDB.DocumentClient({ region: 'eu-central-1' });
const READ_FROM_TABLE = "example-table-prod"
const STORE_TO_TABLE = "example-table-dev"
const fs = require('fs');
async function loadAllResults() {
var results = []
var currentResults = await loadAdditionalResults()
results = results.concat(currentResults.Items)
while (currentResults.LastEvaluatedKey) {
currentResults = await loadAdditionalResults(currentResults.LastEvaluatedKey)
results = results.concat(currentResults.Items)
}
fs.writeFile("output.json", JSON.stringify(results, null, 2), () => {
console.log(results.length)
})
return results
}
async function loadAdditionalResults(start) {
console.log("Loading more results...")
var params = {
TableName: READ_FROM_TABLE,
}
if (start) {
params.ExclusiveStartKey = start
}
return new Promise((resolve, reject) => {
dynamoDb.scan(params, (error, result) => {
if (error) {
console.log(error);
reject(error)
} else if (result) {
resolve(result)
} else {
reject("Unknown error")
}
})
})
}
async function storeAllResults(results) {
var count = 0
for (result of results) {
await storeItem(result)
count++
console.log("Stored " + count + " / " + results.length)
}
}
async function storeItem(item) {
const params = {
TableName: STORE_TO_TABLE,
Item: item
};
return new Promise((resolve, reject) => {
dynamoDb.put(params, function (error, data) {
if (error) {
console.log(error);
reject({ error: 'Could not create item' });
}
resolve("Stored");
});
});
};
async function main() {
let results = await loadAllResults()
storeAllResults(results)
}
main()
随意使用对您有用的任何片段。另请注意,您可以使用https://www.npmjs.com/package/json2csv将 json 转换为 csv
推荐阅读
- hadoop - TEZ 参数等效于“mapreduce.map.failures.maxpercent”
- java - Android - 自定义 Toast 类中的程序 ImageView 约束
- python-3.x - 如何从具有相同类属性的表中抓取文本?
- javascript - 如何从特定频道获取附件 url?
- c - 具有 o(1) 的数组
- vba - 尝试计算平均值的视觉基本错误
- java - 如何在java中从用户获取多个值输入(具有不同类型并用逗号分隔)
- powerbi - 保护 PowerBI 报告的基本设置是什么?
- python - 装饰器没有以预期单位返回值
- php - 捕获的异常不会在 Laravel 中登录