我有2个hive表,一个有很多列和数据,另一个有一些匹配的列有些不匹配。
我希望能够从第一个表中插入数据并指定要插入的列,例如:
表1(水果): 苹果 字符串, 橙子 字符串, 梨 字符串, Grapes 字符串, Kiwi string ;
表2(fruitAndVeg): 梨 字符串, 胡萝卜 字符串, Kiwi string ;
我希望插入语句接近以下内容:
insert overwrite table fruitAndVeg x (x.Pears, x.kiwi) select y.Pears, y.kiwi from fruit y;
我知道下面的代码是可能的,但我的表中有更多的数据,所以尝试指定列而不是手动插入空值或空字符串:
insert overwrite table fruitAndVeg select y.Pears, emptystring, y.kiwi from fruit y;
感谢任何帮助。
NB。如果更容易,也可以使用Impala。
答案 0 :(得分:2)
使用Insert overwrite时请小心,因为它会替换表中的所有现有数据。正如你所说,其中一个表包含大量数据。
提出您的问题,您可以执行以下操作:
插入表fruitandveg(梨,猕猴桃) 选择梨,猕猴桃 来自水果;
请注意插入条款中的梨和猕猴桃的情况(首选小写),因为Hive区分大小写。