Я хочу добавить имена двух столбцов в существующую таблицу в Impala Query - PullRequest
0 голосов
/ 30 апреля 2020

Я пишу следующий запрос для добавления столбца в указанной позиции, но получаю следующую ошибку:

alter table quantum_raw_dev.rpt_backup_allocation
change upt_type upt_type STRING after tray_size;

Ответы [ 4 ]

0 голосов
/ 07 мая 2020

Вы можете добавить один или несколько столбцов в конец списка столбцов, используя:

ALTER TABLE <<em> table_name > ADD COLUMNS ( col_name col_type , ...);

[примечание: НЕТ запятой между именем и типом столбца]

0 голосов
/ 01 мая 2020

Вы не можете добавить столбец между ними. Лучший способ - архивировать данные в другой таблице. Удалите старую таблицу Impala и создайте таблицу fre sh с новыми столбцами в соответствии с желаемым местоположением, а затем заново вставьте данные.

0 голосов
/ 05 мая 2020

Вы можете добавить новые столбцы в Impala, используя ALTER TABLE, как показано ниже:

Замена всех столбцов

Вы также можете полностью заменить все столбцы на новый список столбцов. Это полезно для отбрасывания нескольких столбцов или для добавления столбцов в середине списка. Общий синтаксис:

ALTER TABLE tablename REPLACE COLUMNS (col1 TYPE1, col2 TYPE2,…);

Это полностью удаляет существующий список столбцов и заменяет его новым списком. Будут существовать только столбцы, указанные в операторе ALTER TABLE, и они будут в указанном вами порядке.

Примечание Это не меняет файлы данных, только метаданные для таблицы. , поэтому вы либо захотите, чтобы новый список соответствовал файлам данных, либо вам нужно будет заново создать файлы данных, чтобы соответствовать новому списку.

Надеюсь, это может быть полезно.

0 голосов
/ 01 мая 2020

Я не думаю, что вы можете добавлять столбцы между столбцами в Impala, как указано выше.
Вы можете создавать резервные копии данных, удалять их и создавать заново с новой структурой, а также загружать таблицу из резервной копии. Также, если у вас есть ВИЧE в вашей системе, вы можете попробовать выполнить следующие шаги -
Сначала добавьте столбец, а затем используйте команды ниже для перемещения столбцов. ALTER TABLE tab ADD COLUMNS (id BIGINT);
Перемещает столбец идентификатора в начало.
ALTER TABLE tab CHANGE COLUMN id id BIGINT first;
Перемещает существующий_кол после идентификатора.
ALTER TABLE tab CHANGE COLUMN existing_col existing_col string AFTER id;

Обновите / аннулируйте метаданные после применения всех DDL ,

...