MULTI INSERT支持在一个语句中插入不同的结果表或者分区。
语法:
FROM from_statement
INSERT OVERWRITE | INTO TABLE tablename1
[PARTITION (partcol1=val1, partcol2=val2 ...)]
select_statement1
[INSERT OVERWRITE | INTO TABLE tablename2
[PARTITION ...]
select_statement2]
备注:
? 一般情况下,单个SQL里最多可以写128路输出,超过128路报语法错误。
? 在一个MULTI INSERT中,对于分区表,同一个目标分区不可以出现多次; 对于未分区表,该表不能出现多次。
? 对于同一张分区表的不同分区,不能同时有INSERT OVERWRITE和INSERT INTO操作,否则报错返回。
CREATE TABLE sale_detail_multi LIKE sale_detail;
FROM sale_detail
INSERT OVERWRITE TABLE sale_detail_multi partition (sale_date='2010', region='china' )
SELECT shop_name, customer_id, total_price
INSERT OVERWRITE TABLE sale_detail_multi partition (sale_date='2011', region='china' )
SELECT shop_name, customer_id, total_price;
-- 成功返回,将sale_detail的数据插入到sales里的2010年及2011年中国大区的销售记录中
FROM sale_detail
INSERT OVERWRITE TABLE sale_detail_multi partition (sale_date='2010', region='china' )
SELECT shop_name, customer_id, total_price
INSERT OVERWRITE TABLE sale_detail_multi partition (sale_date='2010', region='china' )
SELECT shop_name, customer_id, total_price;
-- 出错返回,同一分区出现多次
FROM sale_detail
INSERT OVERWRITE TABLE sale_detail_multi partition (sale_date='2010', region='china' )
SELECT shop_name, customer_id, total_price
INSERT INTO TABLE sale_detail_multi partition (sale_date='2011', region='china' )
SELECT shop_name, customer_id, total_price;
--出错返回,同一张表的不同分区,不能同时有INSERT OVERWRITE和insert into操作
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26613085/viewspace-1327450/
,如需转载,请注明出处,否则将追究法律责任。