导出至MaxCompute

本文介绍如何通过INSERT外表方式将AnalyticDB for MySQL数仓版数据导出到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快速入门,完成创建数仓版集群、设置白名单、创建账号、创建数据库和表等准备工作。

  • 如果您的AnalyticDB for MySQL集群是弹性模式,您需要在集群信息页面的网络信息区域,打开启用ENI网络的开关。启用ENI网络

导出到MaxCompute一级分区表

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

  1. 连接目标AnalyticDB for MySQL数仓版集群。详细操作步骤,请参见连接集群

  2. 新建一张外表映射到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

    分区字段。

  3. 将数据从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二级分区表中。

  1. 连接目标AnalyticDB for MySQL数仓版集群。详细操作步骤,请参见连接集群

  2. 新建一张外表映射到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"
    }'
  3. 将数据从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 ...]