本文介绍如何通过INSERT外表方式将AnalyticDB for MySQL数仓版数据导出到MaxCompute分区表。
前提条件
例如通过表操作语句,在MaxCompute中创建以下表。如果您已经有目标数据表,请跳过该步骤。
说明导出数据到MaxCompute分区表时,需要明确指定待写入的分区,不支持同时导出到多个分区,您可以通过执行多个SQL的方式实现将数据导出到多个MaxCompute分区。MaxCompute最高支持6级分区,其他多级分区的操作步骤类似。
一级分区表
CREATE TABLE IF NOT EXISTS odps_table ( uid STRING ) PARTITIONED BY (ds STRING) LIFECYCLE 3;
二级分区表
CREATE TABLE IF NOT EXISTS odps_table ( uid STRING ) PARTITIONED BY (ds STRING,other STRING) LIFECYCLE 3;
根据AnalyticDB MySQL快速入门,完成创建数仓版集群、设置白名单、创建账号、创建数据库和表等准备工作。
如果您的AnalyticDB for MySQL集群是弹性模式,您需要在集群信息页面的网络信息区域,打开启用ENI网络的开关。
导出到MaxCompute一级分区表
本示例将AnalyticDB for MySQL数仓版的adb_table
表中的数据导出到MaxCompute的odps_table
一级分区表中。
连接目标AnalyticDB for MySQL数仓版集群。详细操作步骤,请参见连接集群。
新建一张外表映射到MaxCompute的目标数据表。
CREATE TABLE odps_external_table ( uid string, ds string ) ENGINE='ODPS' TABLE_PROPERTIES='{ "endpoint":"http://service.cn-hangzhou-vpc.maxcompute.aliyun-inc.com/api", "accessid":"LTAdjison5uw8chp****", "accesskey":"HlClencufhdnmJjBYBJ****", "project_name":"test", "table_name":"odps_table", "partition_column":"ds" }'
参数
说明
ENGINE=’ODPS’
表示该表是外部表,使用的存储引擎是MaxCompute。
TABLE_PROPERTIES
用于告知AnalyticDB for MySQL如何访问MaxCompute,并向其写入数据。
endpoint
MaxCompute的
EndPoint(域名节点)
。说明目前仅支持AnalyticDB for MySQL通过MaxCompute的VPC网络Endpoint访问MaxCompute。
如何查看MaxCompute的EndPoint,请参见Endpoint。
accessid
您在访问MaxCompute目标数据表时所持有的AccessKey ID。
accesskey
您在访问MaxCompute目标数据表时所持有的AccessKey Secret。
project_name
MaxCompute中目标数据表所在的工作空间名。
table_name
MaxCompute中目标数据表的表名。
partition_column
分区字段。
将数据从AnalyticDB for MySQL外表导出到MaxCompute的数据表一级分区表。
说明adb_table_column
不包含partition里面的字段。insert [overwrite] into odps_external_table partition(ds='20200401') select [adb_table_column, ...] from adb_table [where ...]
导出到MaxCompute二级分区表
本示例将AnalyticDB for MySQL数仓版的adb_table
表中的数据导出到MaxCompute的odps_table
二级分区表中。
连接目标AnalyticDB for MySQL数仓版集群。详细操作步骤,请参见连接集群。
新建一张外表映射到MaxCompute的数据表。
CREATE TABLE odps_external_table ( uid string, ds string, other string) ENGINE='ODPS' TABLE_PROPERTIES='{ "endpoint":"http://service.cn-hangzhou-vpc.maxcompute.aliyun-inc.com/api", "accessid":"LTAdjison5uw8chp****", "accesskey":"HlClencufhdnmJjBYBJ****", "project_name":"test", "table_name":"odps_table", "partition_column":"ds,other" }'
将数据从AnalyticDB for MySQL外表导出到MaxCompute数据表二级分区表。
说明adb_table_column
不包含partition里面的字段。insert [overwrite] into odps_external_table partition(ds='20200401',other='hangzhou') select [adb_table_column, ...] from adb_table [where ...]