如何删除带前缀的多个表

How to drop multiple tables with prefix

我有一个包含许多 table

的数据库 db1

例如,我想删除所有前缀为 v1_ 的 table 像

DROP TABLE IF EXISTS v1_*;

你有什么想法吗?

不幸的是,Athena 无法做到这一点 SQL。

但是,您可以使用 Glue API 实现类似的效果,例如通过 AWS CLI:

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

上面的命令列出了 us-east-1 区域中名为 "my_database" 的数据库中的所有 table,并按 "v1_" 进行过滤(您可能希望按正则表达式以确保它只在开头匹配)。然后,它将匹配的 table 名称一个接一个地传输到删除它们的命令中。