从 DynamoDB 导出数据

14 浏览
0 Comments

从 DynamoDB 导出数据

是否有可能以某种格式从DynamoDB表中导出数据?

具体用例是我想从我的生产DynamoDB数据库中导出数据,然后将那些数据导入我的本地DynamoDB实例,这样我的应用程序就可以使用本地数据副本而不是生产数据。

我使用标准的DynamoDB-local作为DynamoDB的本地实例。

admin 更改状态以发布 2023年5月20日
0
0 Comments

有一个名为DynamoDBtoCSV的工具,可用于将所有数据导出为CSV文件。但是,如果要进行另一种方式,则必须构建自己的工具。我建议您将此功能添加到该工具中,并将其贡献给Git存储库。


另一种方法是使用AWS数据管道执行此任务(您将节省所有从AWS基础架构外部读取数据的成本)。方法类似:

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

这将会将所有的项导出为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

0