本文介绍如何将MaxCompute数据导入AnalyticDB for MySQL中。

前提条件

  • 根据MaxCompute准备工作快速入门准备源数据。

    例如通过创建表语句,在MaxCompute中创建以下表。如果您已经有数据源,请跳过该步骤。

    CREATE TABLE IF NOT EXISTS odps_nopart_import_test
    (
    uid STRING,
    other STRING
     )
    LIFECYCLE 3;                

    在DataWorks中,通过数据导入的方式将文件odps_nopart_import_test.txt中的数据导入odps_nopart_import_test表。

  • 根据AnalyticDB for MySQL快速入门,完成创建实例、设置白名单、创建账号和数据库等准备工作。

操作步骤

  1. 连接AnalyticDB for MySQL集群,进入目标数据库。

    本示例将odps_nopart_import_test表中的数据导入AnalyticDB for MySQL的test_adb数据库中。

  2. 通过CREATE TABLE,在test_adb数据库中创建外部映射表odps_nopart_import_test_external_table
    CREATE TABLE IF NOT EXISTS odps_nopart_import_test_external_table
    (
     uid string,
     other string
    )
     ENGINE='ODPS'
     TABLE_PROPERTIES='{
     "endpoint":"http://service.cn.maxcompute.aliyun-inc.com/api",
     "accessid":"L*******FsE",
     "accesskey":"CcwF********iWjv",
     "project_name":"odps_project1",
     "table_name":"odps_nopart_import_test"
     }'                 
    参数 说明
    ENGINE=’ODPS’ 表示该表是外部表,使用的存储引擎是MaxCompute。
    TABLE_PROPERTIES 用于告知AnalyticDB for MySQL如何访问MaxCompute中的数据。
    endpoint MaxCompute的EndPoint(域名节点)
    说明 目前仅支持AnalyticDB for MySQL通过MaxCompute的VPC网络Endpoint访问MaxCompute。

    如何查看MaxCompute Endpoint,请参见配置Endpoint

    accessid 您访问MaxCompute源表时所持有的Access Key Secret。

    如何获取您的accessidaccesskey,请参见获取账号的AK信息

    accesskey 您访问MaxCompute源表时所持有的AccessKey ID。
    project_name MaxCompute中的工作空间名称。
    table_name MaxCompute中的数据源表名。
  3. 通过CREATE TABLE,在test_adb数据库中创建目标表adb_nopart_import_test存储从MaxCompute中导入的数据。
    CREATE TABLE IF NOT EXISTS adb_nopart_import_test
    (
    uid string,
    other string
    )
    DISTRIBUTE BY HASH(uid);                   
  4. 执行INSERT语句将MaxCompute数据导入AnalyticDB for MySQL。
    • 执行INSERT INTO导入数据。
      insert into adb_nopart_import_test
      select * from odps_nopart_import_test_external_table                   
      select * from adb_nopart_import_test
      +---------------+-----------------+
      | uid           | other           |
      +---------------+-----------------+
      | 4             | other4          |
      | 6             | other6          |
      | 5             | other5          |
      | 2             | other2          |
      | 1             | other1          |
      | 3             | other3          |
      | 7             | other7          |
                                  
    • 异步执行INSERT OVERWRITE INTO导入数据。
      submit job insert overwrite into adb_nopart_import_test
      select * from odps_nopart_import_test_external_table  
      +---------------------------------------+
      | job_id                                |
      +---------------------------------------+
      | 2020112122202917203100908203303000321 |

      关于异步提交任务详情请参见异步提交导入导出任务