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

a.m*_*ssa 2 sql amazon-athena

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

  • v1_tab_1
  • ...
  • v1_选项卡_n
  • v2_tab_1
  • ...
  • v2_tab_n

例如,我想删除所有带有前缀 v1_ 的表,例如

DROP TABLE IF EXISTS v1_*;
Run Code Online (Sandbox Code Playgroud)

你有什么主意吗?

The*_*heo 8

遗憾的是,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
Run Code Online (Sandbox Code Playgroud)

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