从 DynamoDB 导出数据
从 DynamoDB 导出数据
是否有可能以某种格式从DynamoDB表中导出数据?
具体用例是我想从我的生产DynamoDB数据库中导出数据,然后将那些数据导入我的本地DynamoDB实例,这样我的应用程序就可以使用本地数据副本而不是生产数据。
我使用标准的DynamoDB-local作为DynamoDB的本地实例。
admin 更改状态以发布 2023年5月20日
有一个名为DynamoDBtoCSV的工具,可用于将所有数据导出为CSV文件。但是,如果要进行另一种方式,则必须构建自己的工具。我建议您将此功能添加到该工具中,并将其贡献给Git存储库。
另一种方法是使用AWS数据管道执行此任务(您将节省所有从AWS基础架构外部读取数据的成本)。方法类似:
- 为输出构建管道
- 下载文件。
- 使用自定义阅读器解析它。
这将会将所有的项导出为json文件。
aws dynamodb scan --table-name TABLE_NAME > export.json
这个脚本将从远程dynamodb表读取数据并将完整的表导入到本地。
TABLE=YOURTABLE maxItems=25 index=0 DATA=$(aws dynamodb scan --table-name $TABLE --max-items $maxItems) ((index+=1)) echo $DATA | jq ".Items | {\"$TABLE\": [{\"PutRequest\": { \"Item\": .[]}}]}" > inserts.jsons aws dynamodb batch-write-item --request-items file://inserts.jsons --endpoint-url http://localhost:8000 nextToken=$(echo $DATA | jq '.NextToken') while [[ "${nextToken}" != "" ]] do DATA=$(aws dynamodb scan --table-name $TABLE --max-items $maxItems --starting-token $nextToken) ((index+=1)) echo $DATA | jq ".Items | {\"$TABLE\": [{\"PutRequest\": { \"Item\": .[]}}]}" > inserts.jsons aws dynamodb batch-write-item --request-items file://inserts.jsons --endpoint-url http://localhost:8000 nextToken=$(echo $DATA | jq '.NextToken') done
这里有一个使用文件将导出的数据保存在磁盘上的脚本版本。
TABLE=YOURTABLE maxItems=25 index=0 DATA=$(aws dynamodb scan --table-name $TABLE --max-items $maxItems) ((index+=1)) echo $DATA | cat > "$TABLE-$index.json" nextToken=$(echo $DATA | jq '.NextToken') while [[ "${nextToken}" != "" ]] do DATA=$(aws dynamodb scan --table-name $TABLE --max-items $maxItems --starting-token $nextToken) ((index+=1)) echo $DATA | cat > "$TABLE-$index.json" nextToken=$(echo $DATA | jq '.NextToken') done for x in `ls *$TABLE*.json`; do cat $x | jq ".Items | {\"$TABLE\": [{\"PutRequest\": { \"Item\": .[]}}]}" > inserts.jsons aws dynamodb batch-write-item --request-items file://inserts.jsons --endpoint-url http://localhost:8000 done