本文介绍如何通过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网络的开关。启用ENI网络

导出到MaxCompute一级分区表

本示例将AnalyticDB MySQL版数仓版(3.0)adb_table表中的数据导出到MaxCompute的odps_table一级分区表中。

  1. 连接目标AnalyticDB MySQL数仓版(3.0)集群。详细操作步骤,请参见连接集群
  2. 新建一张外表映射到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,并向其写入数据。
    endpointMaxCompute的EndPoint(域名节点)
    说明 目前仅支持AnalyticDB MySQL版通过MaxCompute的VPC网络Endpoint访问MaxCompute。

    如何查看MaxCompute的EndPoint,请参见Endpoint

    accessid您在访问MaxCompute目标数据表时所持有的AccessKey ID。
    accesskey您在访问MaxCompute目标数据表时所持有的AccessKey Secret。
    project_nameMaxCompute中目标数据表所在的工作空间名。
    table_nameMaxCompute中目标数据表的表名。
    partition_column分区字段。
  3. 将数据从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二级分区表中。

  1. 连接目标AnalyticDB MySQL数仓版(3.0)集群。详细操作步骤,请参见连接集群
  2. 新建一张外表映射到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"
    }'
  3. 将数据从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 ...]