可能是一个非常微不足道的问题,但我对此不确定,也不想失去桌子。如何在 Athena 中重命名表?
Database name - friends
table name - centralPark
desired table name -centralPerk
使用 CTAS 查询很有效,但我发现它相当慢。它需要复制所有文件。
但是你不需要复制文件。您可以直接在 Glue 目录中创建一个新表并将其指向现有文件。这可以在几秒钟或更短的时间内完成。
如果您使用 Python,我强烈推荐使用 awswrangler 库来完成此类工作。
import awswrangler as wr
def wrangler_copy(db, old_name, new_name):
wr.catalog.create_parquet_table(
db,
new_name,
path=wr.catalog.get_table_location(db, old_name),
columns_types=wr.catalog.get_table_types(db, old_name),
# TODO: partitions, etc
)
然后如果你愿意的话,可以扔掉旧桌子。
DROP TABLE IF EXISTS <old_name>
我知道这已经很旧了,但是对于寻求答案的新人,我无论如何都会写。
没有单个命令,但您可以使用 2 个命令轻松完成,无论是手动还是编程。 你会的
show create table `your_table`
然后将“创建外部表”命令复制粘贴到编辑器中,替换表名称并运行。
如果表包含非投影分区,您还需要运行此命令来检测并加载分区。
MSCK REPAIR TABLE `your_table`
您可以通过简单的正则表达式替换表名并重新运行来以编程方式执行相同的操作。当然,它比运行“CREATE TABLE ... AS SELECT ...”更复杂,但它是即时的、免费的,并且将保证指向 S3 中相同位置的相同结构。