2017-01-27 3 views
0

У меня есть куча столов в BigQuery, которые я бы хотел переименовать. Основная причина этого в том, что я хотел бы воспользоваться функцией wildcard table в моих запросах. Исходный формат имен моих таблиц не предназначен для эффективной работы с этой функцией.Простое переименование нескольких таблиц в BigQuery. Является ли это возможным?

Возможно ли программно/легко переименовать много таблиц в BigQuery?

ответ

0

В настоящее время нет способа переименовать таблицу в BigQuery. Способ достижения этого - запустить задание на копирование BigQuery, которое скопирует таблицу с новым именем, а когда оно будет закончено, удалите исходную таблицу. Запуск заданий на копирование не несет сборов за обработку.

Использование инструмента bq командной строки, некоторые простые баш будет делать трюк:

#!/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 таблиц в наборе данных. Поэтому этот параметр необходим, чтобы оттянуть все таблицы в наборе данных (соответственно отрегулируйте).