根据Apache Hive Wiki(https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML), 多重插入“可以减少所需的数据扫描次数。Hive可以通过只扫描一次输入数据(并应用不同的查询运算符)到输入数据来将数据插入到多个表中”。
但是,可以将联接应用于这些多个插入吗?
我之所以问是因为我无法在通用FROM语句中应用联接,因为我需要考虑到每个“第一”表的不同参数来对第二个表的数据进行子集化。
谢谢!
答案 0 :(得分:0)
应该可能是这样。
from (
select a.*,b* from a inner join b on a.id=b.id2
)
insert ..
insert ..
答案 1 :(得分:0)
是的,您也可以应用加入条件。查询格式如下:
from emp a,emp b
insert into table manager select distinct a.manager_id,a.name where a.id=b.manager_id
insert into table dept select distinct a.dept_id,a.project_id;
以上查询将对emp表应用自连接,并将提取manager_id和name,然后将其插入manager表中。还将在dept表中插入project_id和dept_id。
简单地说,在查询中使用内部联接也将执行与上述相同的任务:
从emp中将内部连接emp b插入表管理器中,选择不同的a.manager_id,a.name,其中a.id = b.manager_id插入表部中,选择不同的a.dept_id,a.project_id;