DynamoDBからデータをエクスポートする 質問する

DynamoDBからデータをエクスポートする 質問する

DynamoDB テーブルから何らかの形式でデータをエクスポートすることは可能ですか?

具体的な使用例としては、本番環境の Dynamodb データベースからデータをエクスポートし、そのデータをローカルの Dynamodb インスタンスにインポートして、アプリケーションが本番環境のデータではなくローカルのデータのコピーで動作できるようにすることです。

私は標準を使用しますDynamoDB ローカルDynamoDB のローカルインスタンスとして。

ベストアンサー1

これにより、すべてのアイテムが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

おすすめ記事