MaxCompute SQL支持您在一条SQL语句中通过insert into
或insert overwrite
操作将数据插入不同的目标表或者分区中,实现多路输出。
本文中的命令您可以在如下工具平台执行:
- MaxCompute客户端
- MaxCompute控制台(查询编辑器)
- DataWorks控制台
- MaxCompute Studio
前提条件
执行操作前需要具备目标表的修改权限(Alter)及源表的元信息读取权限(Describe)。授权操作请参见授权。
功能介绍
在使用MaxCompute SQL处理数据时,multi insert
操作可以将数据插入不同的目标表或分区中,实现多路输出。
使用限制
multi insert
操作的使用限制如下:
- 单条
multi insert
语句中最多可以写255路输出。超过255路,会上报语法错误。 - 单条
multi insert
语句中,对于分区表,同一个目标分区不允许出现多次。 - 单条
multi insert
语句中,对于非分区表,该表不能出现多次。
命令格式
from
insert overwrite | into table [partition ()]
insert overwrite | into table [partition ()]
...;
- from_statement:必填。
from
子句,代表数据来源。例如,源表名称。
- table_name:必填。需要插入数据的目标表名称。
- pt_spec:可选。需要插入数据的目标分区信息,此参数不允许使用函数等表达式,只能是常量。格式为
(partition_col1 = partition_col_value1, partition_col2 = partition_col_value2, ...)
。插入多个分区时,例如pt_spec1和pt_spec2,目标分区不允许出现多次,即pt_spec1和pt_spec2的分区信息不相同。
- select_statement:必填。
select
子句,从源表中查询需要插入的数据。
使用示例
- 示例1:将表sale_detail的数据插入到表sale_detail_multi的2010年及2011年中国的销售记录中。命令示例如下:
--创建表sale_detail_multi。
create table sale_detail_multi like sale_detail;
--开启全表扫描,仅此Session有效。将表sale_detail中的数据插入到表sale_detail_multi。
set odps.sql.allow.fullscan=true;
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;
--开启全表扫描,仅此Session有效。执行select
语句查看表sale_detail_multi中的数据。
set odps.sql.allow.fullscan=true;
select * from sale_detail_multi;
--返回结果。
+------------+-------------+-------------+------------+------------+
| shop_name | customer_id | total_price | sale_date | region |
+------------+-------------+-------------+------------+------------+
| s1 | c1 | 100.1 | 2010 | china |
| s2 | c2 | 100.2 | 2010 | china |
| s3 | c3 | 100.3 | 2010 | china |
| s1 | c1 | 100.1 | 2011 | china |
| s2 | c2 | 100.2 | 2011 | china |
| s3 | c3 | 100.3 | 2011 | china |
+------------+-------------+-------------+------------+------------+
- 示例2:同一目标分区不允许出现多次,否则会返回报错。错误命令示例如下:
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;
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家
阿里云企业补贴进行中: 马上申请
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠
转转请注明出处:https://www.yunxiaoer.com/157429.html
赞 (0)
阿里云云原生大数据计算服务 MaxComputePyODPS参数传递-云淘科技
上一篇
2023年12月10日 上午12:58
阿里云云原生大数据计算服务 MaxComputeTRANS_ARRAY-云淘科技
下一篇
2023年12月10日
详情页2
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。