我在BigQuery中有一堆表,我想重命名。造成这种情况的主要原因是我希望在查询中使用wildcard table功能。我的表名的原始格式不适用于此功能。
是否可以在BigQuery中以编程方式/轻松地重命名大量表格?
答案 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个表。因此需要此参数来拉回数据集中的所有表(相应地进行调整)。