从DynamoDB导出数据

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基础架构外部读取数据的所有成本).方法类似:

  1. 构建输出管道
  2. 下载文件.
  3. 用自定义阅读器解析它.


Val*_*Dia 11

这是一种使用aws clijq从表中导出一些数据的方法(通常我们只想在本地获取我们的生产数据样本)。假设我们有一个毫不奇怪的 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。)。

  • 这条线在 Windows 中应该是什么样子? (2认同)

nos*_*omo 9

将其从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)

资源


Iva*_*rov 6

这会将所有项目导出为jsons文档

aws dynamodb scan --table-name TABLE_NAME > export.json
Run Code Online (Sandbox Code Playgroud)

  • 据我所知,这种导出数据的方式不会产生可用于导入的json(据我所知) (3认同)

Jor*_*var 5

我扩展了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)