hive-alter列值并插入新值来代替表中的旧列值

esbemjvw  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(610)

我是 hive 里的新手。我在配置单元中有一个表,列中有unix时间戳值。我正在尝试用正常的时间戳值更改列值。
我试过这个。我能够将unix时间戳值转换为正常的时间戳值。

"SELECT from_unixtime(cast(ts as bigint)) FROM june11http" 

Results
--------

2010-06-10 20:01:07

2010-06-10 20:01:10

2010-06-10 20:01:12

2010-06-10 20:01:14

2010-06-10 20:01:10

2010-06-10 20:01:15

.......

现在我想用上面的值替换“ts”列中的原始值。
我尝试了以下查询:

"ALTER TABLE june11http CHANGE ts  ts from_unixtime(cast(ts as bigint)".

我看到语法错误。有人能给我出个主意吗?

ma8fv8wu

ma8fv8wu1#

因为正确的语法是:

ALTER TABLE name CHANGE column_name new_name new_type

您应该指定新的类型,而不是执行数据转换。
尝试使用ctas查询创建新表,应该可以。

相关问题