本文介绍如何通过INSERT外表方式将AnalyticDB MySQL版数仓版(3.0)数据导出到MaxCompute分区表。
前提条件
- 根据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快速入门,完成创建数仓版(3.0)集群、设置白名单、创建账号和数据库等准备工作。
- 如果您的AnalyticDB MySQL集群是弹性模式,您需要在集群信息页面的网络信息区域,打开启用ENI网络的开关。
导出到MaxCompute一级分区表
本示例将AnalyticDB MySQL版数仓版(3.0)的adb_table
表中的数据导出到MaxCompute的odps_table
一级分区表中。
- 连接目标AnalyticDB MySQL数仓版(3.0)集群。详细操作步骤,请参见连接集群。
- 新建一张外表映射到MaxCompute的目标数据表。
CREATE TABLE odps_external_table ( uid string, ds string ) ENGINE='ODPS' TABLE_PROPERTIES='{ "endpoint":"http://service.odps.aliyun-inc.com/api", "accessid":"xxx", "accesskey":"xxx", "project_name":"xxx", "table_name":"odps_table", "partition_column":"ds" }'
参数 说明 ENGINE=’ODPS’ 表示该表是外部表,使用的存储引擎是MaxCompute。 TABLE_PROPERTIES 用于告知AnalyticDB MySQL版如何访问MaxCompute,并向其写入数据。 endpoint MaxCompute的 EndPoint(域名节点)
。说明 目前仅支持AnalyticDB 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 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 MySQL版数仓版(3.0)的adb_table
表中的数据导出到MaxCompute的odps_table
二级分区表中。
- 连接目标AnalyticDB MySQL数仓版(3.0)集群。详细操作步骤,请参见连接集群。
- 新建一张外表映射到MaxCompute的数据表。
CREATE TABLE odps_external_table ( uid string, ds string, other string) ENGINE='ODPS' TABLE_PROPERTIES='{ "endpoint":"http://service.odps.aliyun-inc.com/api", "accessid":"xxx", "accesskey":"xxx", "project_name":"xxx", "table_name":"odps_table", "partition_column":"ds,other" }'
- 将数据从AnalyticDB 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 ...]