我有一张这样的Hive桌:
CREATE TABLE mytest (name int, timestamp bigint, donation int);
我用的是Hive0.12。注意“时间戳”字段。顺便说一句,hive0.12+引入了一种新的数据类型,称为 timestamp
. 假设我要将此字段重命名为 time_stamp
我试过这些:
ALTER TABLE mytest CHANGE timestamp time_stamp BIGINT; ALTER TABLE mytest CHANGE COLUMN timestamp time_stamp BIGINT;
ALTER TABLE mytest CHANGE [timestamp] time_stamp BIGINT; ALTER TABLE mytest CHANGE
timestamptime_stamp BIGINT;
但是,它们都给了我以下错误:
FAILED: ParseException line 1:38 mismatched input 'CHANGE' expecting KW_EXCHANGE near 'mytest' in alter exchange partition
我确信这是因为我的字段名与数据类型名相同。如何更改的架构 mytest
不必做以下事情?
CREATE mytest_cpy AS SELECT mytest.name, mytest.timestamp AS time_stamp,
mytest.donation FROM mytest;
DROP TABLE mytest;
ALTER TABLE mytest_cpy RENAME TO mytest;
谢谢!感谢您的帮助!
3条答案
按热度按时间zbq4xfa01#
在ms sql中使用:
在mysql中,请尝试:
或:
8nuwlpux2#
虽然这篇文章有答案,但仍然:
如果尝试为配置单元提供保留关键字的列名,则会发生错误。
要覆盖保留关键字,可以使用backtick(`),这是您的波浪号键下面的字符或左至1键。
k4aesqcs3#
对任何不常用的列名使用反勾号,可以包含奇怪的符号,也可以与数据类型相同。这适用于hive 0.14: