我试图将表中的现有列重命名为新列。但是,在更改名称后,新列仅给了我'NULL'值。
Parquet中表的存储格式。
例如
“用户”是字符串数据类型的“测试”表中的一列。插入了一个示例记录,其值为'John'。
Select user from Test;
结果:约翰
我已将“用户”重命名为“用户名”,而未更改任何数据类型。
ALTER TABLE Test CHANGE user user_name String;
Select user_name from Test;
结果:NULL
请让我知道如何解决此问题?
在这种情况下,MSCK修复表命令是否有用?
我是否需要重新加载此表以解决此问题?
关于, Adarsh K S
答案 0 :(得分:0)
您可以做的是添加新字段,执行一次插入覆盖,然后删除旧字段。 像这样:
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 );