配置单元-重命名与数据类型同名的字段

ruoxqz4g  于 2021-06-03  发布在  Hadoop
关注(0)|答案(3)|浏览(414)

我有一张这样的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 CHANGEtimestamptime_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;

谢谢!感谢您的帮助!

zbq4xfa0

zbq4xfa01#

在ms sql中使用:

EXECUTE sp_rename 'dbo.mytest.timestamp', 'time_stamp', 'COLUMN'

在mysql中,请尝试:

USE database_name;
ALTER TABLE mytest CHANGE timestamp time_stamp BIGINT;

或:

ALTER TABLE database_name.mytest CHANGE timestamp time_stamp BIGINT;
8nuwlpux

8nuwlpux2#

虽然这篇文章有答案,但仍然:
如果尝试为配置单元提供保留关键字的列名,则会发生错误。
要覆盖保留关键字,可以使用backtick(`),这是您的波浪号键下面的字符或左至1键。

k4aesqcs

k4aesqcs3#

对任何不常用的列名使用反勾号,可以包含奇怪的符号,也可以与数据类型相同。这适用于hive 0.14:

ALTER TABLE mytest CHANGE COLUMN `timestamp` time_stamp BIGINT;

相关问题