无法做到:Hive插入到从不同的表模式中选择

时间:2017-10-09 18:54:25

标签: hadoop merge hive database-schema

在Hive中: 我试图在HIVE中使用不同的模式从不同的表中进行数据合并(唯一的区别是可以使用数据的附加列)。

table A:
id int, name string, v1 string, v2 string

tbale B:
id int, name string, v1 String

table C:
id int, name string, v1 string, v2 string, v3 string, v4 string

我需要将所有这些表中的数据合并到一个带有

的新“表D”中
table D:
id int, name string, v1 stirng, v2 string, v3 string, v4 string

如何根据表模式中的条件从源表插入数据,如果列存在,则插入该列值,否则为null。

我编写了一个类似于脚本的查询来循环遍历所有表:

insert into table D select id, name, v1,v2,v3,v4 from ${hiveconf:TABLE_NAME};

这将失败,因为它找不到表A中未列出的v3,v4列

由于我必须从数千个不同的表中进行选择,我想在脚本中动态添加基于条件的列选择(因为有数千个表在v1到v4之间可以有不同数量的列),因为它是单独编写和执行数千个插入语句不是一个好习惯。 我们怎样才能在SQL中实现这一点,所以我可以想到Hive的做法。

0 个答案:

没有答案