在BigQuery中轻松重命名多个表。可能吗?

时间:2017-01-27 07:19:10

标签: google-bigquery

我在BigQuery中有一堆表,我想重命名。造成这种情况的主要原因是我希望在查询中使用wildcard table功能。我的表名的原始格式不适用于此功能。

是否可以在BigQuery中以编程方式/轻松地重命名大量表格?

1 个答案:

答案 0 :(得分:1)

目前,无法在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个表。因此需要此参数来拉回数据集中的所有表(相应地进行调整)。