如何删除带前缀的多个表
How to drop multiple tables with prefix
我有一个包含许多 table
的数据库 db1
- v1_tab_1
- ...
- v1_tab_n
- v2_tab_1
- ...
- v2_tab_n
例如,我想删除所有前缀为 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 名称一个接一个地传输到删除它们的命令中。
我有一个包含许多 table
的数据库 db1- v1_tab_1
- ...
- v1_tab_n
- v2_tab_1
- ...
- v2_tab_n
例如,我想删除所有前缀为 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 名称一个接一个地传输到删除它们的命令中。