2017-02-22 63 views
2

У меня есть таблица уже в BQ, заполненная данными. Я хочу переименовать заголовки (обновить схему) таблицы. Я использую инструмент командной строкиОбновление схемы таблицы больших запросов

Предполагая, что это что-то похожее на это?

bq update --schema:Col1:STRING,Col2:STRING....... data_set.Table_Name 

Но я получаю

FATAL Flags parsing error: Unknown command line flag 'schema:Col1:STRING,Col2:STRING.....'

Что я упускаю?

ответ

2

Как говорит Моша, переименование столбцов не поддерживается через API, но вы можете запустить запрос, который сканирует всю таблицу и перезаписывает ее.

bq query --nouse_legacy_sql \ 
--destination_table p:d.table \ 
--replace \ 
'SELECT * EXCEPT(col1,col2), col1 AS newcol1, col2 AS newcol2 FROM `p.d.table`' 

Предупреждение: Это перезаписывает таблицу. Но это то, что вы хотели в любом случае.

1

Правильный синтаксис в командной строке будет

bq update --schema col1:STRING,col2,STRING dataset.table

Однако переименование полей не поддерживается изменение схемы - вы получите сообщение об ошибке сказав

Provided Schema does not match table

Вы можете только добавить новые поля или ослаблять существующие поля (т. е. от ТРЕБУЕТСЯ до NULLABLE).