我有一个外部分区的Hive表。其列之一是名为OLDDATE的字符串,其日期具有不同的格式(DD-MM-YY)。我想更新该列并以YYYY-MM-DD格式存储日期。所有年份均为20XX。

所以我想到了

选择CONCAT('20',SPLIT(OLDDATE,'-')[2],'-',SPLIT(OLDDATE,'-')[1],'-',SPLIT(OLDDATE,'-')[0] )从表中

这给了我我想要的格式的日期。现在如何用这个新日期覆盖旧日期?

最佳答案

您可以通过使用表本身的内容覆盖表来实现更新,就像更改转换的日期字段一样,就像下面的伪代码一样:

INSERT OVERWRITE table
SELECT
    col1
  , col2
  ...
  , CONCAT('20',SPLIT(OLDDATE ,'-')[2],'-',SPLIT(OLDDATE ,'-')[1],'-',SPLIT(OLDDATE ,'-')[0]) AS olddate
  ...
  , coln
FROM table;

关于hadoop - 配置单元更新列中的所有值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29288199/

10-16 01:21