我想建立一个自动系统来帮助我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)
我需要一个命令,可以包含这些选项,请。或者-如果你有别的好主意,我会非常感激。。。
谢谢您!
1条答案
按热度按时间hxzsmxv21#
你可以用
ALTER TABLE REPLACE COLUMNS
. 它完全按照你的要求做,它将一次替换所有列。看到了吗https://cwiki.apache.org/confluence/display/hive/languagemanual+ddl#languagemanualddl-添加/替换列