重建具有不同定义的配置单元表

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

我想建立一个自动系统来帮助我MapHive表。我有一个包含元数据的sql表:tableid,fieldname,fieldtype,description,lastupdated。我想自动更新我的表-

where lastUpdate=CURDATE() - INTERVAL '1' DAY

但我没有说明做了什么更改—它可以是表中的一个新列,也可以是一个已更改的列名,甚至是一个描述更新。当一个表已经存在时,有没有办法重新“定义”它?我要做的所有更改都将立即执行(所有更改类型)?
例如,我有一个定义如下的表:

create external table IF NOT EXISTS tableA (`a` string, `b` int, `c` int) PARTITIONED BY (dt date) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE LOCATION 'File/Path';

改变是列“b”类型现在是“string”。是否有我可以编写的(通用)更新/更改查询:


* SomeCommand* tableA (`a` string, `b` string, `c` int)

我的专栏会更新吗?
如果我有一个新的列-d,则输入:float。


* SomeCommand* tableA (`a` string, `b` string, `c` int, `d` float)

我需要一个命令,可以包含这些选项,请。或者-如果你有别的好主意,我会非常感激。。。
谢谢您!

hxzsmxv2

hxzsmxv21#

你可以用 ALTER TABLE REPLACE COLUMNS . 它完全按照你的要求做,
它将一次替换所有列。看到了吗https://cwiki.apache.org/confluence/display/hive/languagemanual+ddl#languagemanualddl-添加/替换列

相关问题