Имя столбца изменения таблицы изменения куста дает 'NULL' переименованному столбцу - PullRequest
0 голосов
/ 30 августа 2018

Я пытался переименовать существующий столбец в таблице в новый. Но после изменения имени новый столбец дает мне только значение NULL.

Формат хранения стола в паркете.

Например,

'user' - это столбец в таблице 'Test' типа данных string. Вставлен образец записи со значением «Джон».

Select user from Test;

Результат: Джон

Я переименовал «user» в «user_name», не меняя тип данных.

ALTER TABLE Test CHANGE user user_name String;

Select user_name from Test;

Результат: NULL

Пожалуйста, дайте мне знать, как решить эту проблему?

Может ли в этом случае использоваться команда таблицы восстановления MSCK?

Нужно ли перезагрузить эту таблицу еще раз, чтобы исправить эту проблему?

С уважением, Адарш К С

1 Ответ

0 голосов
/ 24 июля 2019

Что вы можете сделать, это добавить новое поле, выполнить перезапись одной вставки и затем удалить старое поле. Примерно так:

ALTER TABLE temp.Test ADD COLUMNS (user_new string) CASCADE;
insert overwrite table temp.Test
select 
      user_a,
      a,
      b,
      c,
      user_a as user_new
from temp.test;
ALTER TABLE temp.test  REPLACE COLUMNS(user_new string, a string, b string, c string );
...