ITPub博客

首页 > 大数据 > 数据分析 > ODPS 多路输出(MULTI INSERT)

ODPS 多路输出(MULTI INSERT)

数据分析 作者:thamsyangsw 时间:2014-11-10 16:48:27 0 删除 编辑
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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-01-12

  • 博文量
    161
  • 访问量
    1235406