如何删除 DynamoDb 中的所有现有表?

How to delete all the Existing tables in DynamoDb?

我想删除 DynamoDb 数据库中的所有现有表吗?

有什么办法吗?

您有 2 个选择:

  1. 手动进入 AWS 控制台并删除每个 table
  2. 以编程方式为每个调用 ListTables (multiple calls if pagination is needed), iterate through the resulting TableNames, and call DeleteTable
require 'json'
tables=JSON.parse(`aws dynamodb list-tables`)["TableNames"]

tables.each do |table|
  `aws dynamodb delete-table  --table-name #{table}`
  sleep 2 # Only 10 tables can be created, updated, or deleted simultaneously
  puts "#{table} deleted"
end

您可以使用 aws cli 删除所有 table,可能只有一个 table 除外。

aws dynamodb list-tables --profile your_profile | jq .'TableNames[]' -r | grep -v table_you_dont_want_to_delete | xargs -ITABLE -n 1 aws dynamodb delete-table --table-name TABLE --profile your_profile

您可以使用以下代码删除 table。

var params = {
    TableName: 'table-name',
};
dynamodb.deleteTable(params, function(err, data) {
    if (err) ppJson(err); // an error occurred
    else ppJson(data); // successful response
});

Javascript删除所有

var AWS = require("aws-sdk")

AWS.config.update({
  region: "us-west-2",
  endpoint: process.env.DYNAMODB_URL
})

var dynamodb = new AWS.DynamoDB();

dynamodb.listTables({}, function(err, data) {
  if (err) console.error(err, err.stack)
  for (tableName of data.TableNames) {
    dynamodb.deleteTable({TableName: tableName}, function(err, data) {
      if (err) console.error(err, err.stack)
      else console.log('Deleted', tableName)
    })
  }
})

新的 UI 控制台 (2020) 现在允许您 select 多个表和删除。

要删除名称中包含特定关键字的所有 DynamoDB 表,只需 运行 以下 CLI 命令:

tableList=$(aws dynamodb list-tables | jq .'TableNames[]' -r | grep tableNameKeyword)
for table in $tableList; do aws dynamodb delete-table --table-name $table ; done