我有 2 个配置单元表,一个有很多列和数据,另一个有一些匹配的列,有些不匹配。
我希望能够从第一个表插入数据并指定要插入的列,例如:
表1(水果): 苹果 字符串, 橙子 字符串, 梨 串, 葡萄 串, 猕猴桃 字符串;
表 2(水果和蔬菜): 梨 串, 胡萝卜 字符串, 猕猴桃 字符串;
我想要一个类似于以下内容的插入语句:
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;
感谢任何帮助。
注意。如果更简单的话也可以使用 Impala。
最佳答案
使用插入覆盖时请小心,因为它将替换表中的任何现有数据。正如您所说,其中一张表包含大量数据。
针对您的问题,您可以执行以下操作:
插入餐 table 水果和蔬菜(梨、猕猴桃) 选择梨、猕猴桃 来自水果;
请注意 insert into 子句中梨和猕猴桃的大小写(首选小写),因为 Hive 区分大小写。
关于将数据从另一个表插入到 HIVE 中的选定列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29282106/