我在 BigQuery 中有一堆表想要重命名。这样做的主要原因是我想在查询中利用通配符表功能。我的表名称的原始格式不适用于此功能。
是否可以通过编程/轻松地重命名 BigQuery 中的大量表?
目前,无法在 BigQuery 中重命名表。实现此目的的方法是运行 BigQuery 复制作业,该作业将使用新名称复制表,完成后删除原始表。运行复印作业不会产生处理费用。
使用
bq
命令行工具,一些简单的 bash 就可以解决问题:
#!/usr/bin/env bash
SRC="<project-id>:<dataset>"
bq ls --max_results=500 --format=csv $SRC | awk '{if(NR>1)print}' | awk -F, '{print $1}' | while read -r TABLE; do bq cp -f "${SRC}.${TABLE}" "${SRC}.${TABLE}_transformed_${RANDOM}" && bq rm -f "${SRC}.${TABLE}";done
警告:这会删除原始表!小心点。
这里需要注意的一件事是
--max_results
参数。这很重要,因为默认情况下 bq ls
命令仅列出数据集中的 50 个表。所以需要这个参数来拉回数据集中的所有表(相应调整)。
ALTER TABLE mydataset.mytable
RENAME TO mynewtable;
https://cloud.google.com/bigquery/docs/managing-tables#renaming-table