Sql 如何删除多个带有前缀的表

Sql 如何删除多个带有前缀的表,sql,amazon-athena,Sql,Amazon Athena,我有一个数据库db1,其中包含许多表 v1_选项卡_1 v1\u选项卡\u n v2\u表1 v2\u选项卡\u n 例如,我想删除所有前缀为v1\u的表 差不多 DROP TABLE IF EXISTS v1_*; 你知道吗?不幸的是,这不可能用Athena SQL实现 但是,您可以使用Glue API实现类似的功能,例如: 上面的命令列出了us-east-1区域中名为“my_database”的数据库中的所有表,并按“v1_”对它们进行筛选(您可能希望按regex进行筛选,以确保它

我有一个数据库db1,其中包含许多表

  • v1_选项卡_1
  • v1\u选项卡\u n
  • v2\u表1
  • v2\u选项卡\u n
例如,我想删除所有前缀为v1\u的表 差不多

DROP TABLE IF EXISTS v1_*;

你知道吗?

不幸的是,这不可能用Athena SQL实现

但是,您可以使用Glue API实现类似的功能,例如:


上面的命令列出了us-east-1区域中名为“my_database”的数据库中的所有表,并按“v1_”对它们进行筛选(您可能希望按regex进行筛选,以确保它只在开始时匹配)。然后,它将匹配的表名一个接一个地传输到一个命令中,该命令将删除这些表名。

您可以使用动态SQL执行此操作,并动态生成删除查询。有很多表要删除,这听起来像是一个设计缺陷。也许你应该重新设计。
aws glue get-tables \
  --region us-east-1 \
  --database-name my_database \
  --query 'TableList[].Name' \
  --output text \
  | grep -F v1_ \
  | xargs -n 1 aws glue delete-table \
    --region us-east-1 \
    --database-name my_database \
    --name