Kri*_*kar 22 amazon-web-services amazon-dynamodb amazon-dynamodb-local
是否可以以某种格式从DynamoDB表导出数据?
具体的用例是我想从我的生产dynamodb数据库导出数据并将该数据导入我的本地dynamodb实例,这样我的应用程序就可以使用本地数据副本而不是生产数据.
我使用link作为DynamoDB的本地实例.
Dan*_* C. 17
有一个名为DynamoDBtoCSV的工具
可用于将所有数据导出到CSV文件.但是,相反,你必须建立自己的工具.我的建议是,您将此功能添加到该工具,并将其贡献给Git存储库.
另一种方法是使用AWS Data Pipeline完成此任务(您将节省从AWS基础架构外部读取数据的所有成本).方法类似:
Val*_*Dia 11
这是一种使用aws cli和jq从表中导出一些数据的方法(通常我们只想在本地获取我们的生产数据样本)。假设我们有一个毫不奇怪的 prod 表和一个名为的本地表my-prod-tablemy-local-table
要导出数据,请运行以下命令:
aws dynamodb scan --table-name my-prod-table \
| jq '{"my-local-table": [.Items[] | {PutRequest: {Item: .}}]}' > data.json
Run Code Online (Sandbox Code Playgroud)
基本上发生的事情是我们扫描我们的 prod 表,将扫描的输出转换为batchWriteItem的格式并将结果转储到文件中。
要导入本地表中的数据,请运行:
aws dynamodb batch-write-item \
--request-items file://data.json \
--endpoint-url http://localhost:8000
Run Code Online (Sandbox Code Playgroud)
注意:batch-write-item请求有一些限制- BatchWriteItem 操作最多可以包含 25 个单独的 PutItem 和 DeleteItem 请求,并且可以写入最多 16 MB 的数据。(单个项目的最大大小为 400 KB。)。
将其从DynamoDB界面导出到S3.
然后使用sed将其转换为Json:
sed -e 's/$/}/' -e $'s/\x02/,"/g' -e $'s/\x03/":/g' -e 's/^/{"/' <exported_table> > <exported_table>.json
Run Code Online (Sandbox Code Playgroud)
这会将所有项目导出为jsons文档
aws dynamodb scan --table-name TABLE_NAME > export.json
Run Code Online (Sandbox Code Playgroud)
我扩展了Valy dia解决方案,以允许仅使用aws-cli进行所有导出过程| 杰克
aws dynamodb scan --max-items 25 --table-name <TABLE_NAME> \
| jq '{"<TABLE_NAME>": [.Items[] | {PutRequest: {Item: .}}]}' > data.json
aws dynamodb describe-table --table-name <TABLE_NAME> > describe.json | jq ' .Table | {"TableName": .TableName, "KeySchema": .KeySchema, "AttributeDefinitions": .AttributeDefinitions, "ProvisionedThroughput": {
"ReadCapacityUnits": 5,
"WriteCapacityUnits": 5
}}' > table-definition.json
aws dynamodb create-table --cli-input-json file://table-definition.json --endpoint-url http://localhost:8000 --region us-east-1
aws dynamodb batch-write-item --request-items file://data.json --endpoint-url http://localhost:8000
aws dynamodb scan --table-name <TABLE_NAME> --endpoint-url http://localhost:8000
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38304 次 |
| 最近记录: |