本文介绍如何通过AnalyticDB for MySQL映射表和INSERT OVERWRITE INTO或者INSERT INTO将云数据库RDS MySQL中的数据导入AnalyticDB for MySQL。

前提条件

  • 根据RDS快速入门,准备好测试数据。
    说明 RDS MySQL与AnalyticDB for MySQL必须在同一个VPC下,并且需要将该VPC网段加入RDS白名单中。

    本示例在RDS MySQL的test_adb数据库中创建goods表。

    CREATE TABLE goods (
    goods_id bigint(20) NOT NULL,
    price double NOT NULL,
    class bigint(20) NOT NULL,
    name varchar(32) NOT NULL,
    update_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (goods_id)
    )                 
  • 根据AnalyticDB for MySQL快速入门,完成创建实例、设置白名单、创建账号和数据库等准备工作。

背景信息

说明 本文中的MySQL数据库可以是RDS MySQL数据库,或者ECS自建MySQL数据库。

操作步骤

  1. 连接目标AnalyticDB for MySQL数据库
  2. 通过CREATE TABLE,在adb_demo数据库中创建外部映射表goods_external_table。
    CREATE TABLE IF NOT EXISTS goods_external_table (
            goods_id bigint(20) NOT NULL,
            price double NOT NULL,
            class bigint(20) NOT NULL,
            name varchar(32) NOT NULL,
            update_time timestamp,
            PRIMARY KEY (goods_id)
     )
            ENGINE='mysql'  
            TABLE_PROPERTIES='{  
            "url":"jdbc:mysql://mysql-vpc-address:3306/test_adb",  
            "tablename":"goods",  
            "username":"mysql-user-name",  
            "password":"mysql-user-password"  
      }'              
    参数 说明
    ENGINE=’mysql’ 表示该表是外部表,使用的存储引擎是MySQL。
    TABLE_PROPERTIES 用于告知AnalyticDB for MySQL如何访问RDS MySQL中的数据。
    url RDS MySQL中的内网地址,即VPC连接地址。

    地址格式为:"jdbc:mysql://mysql-vpc-address:3306/rds-database-name"

    说明 目前仅支持AnalyticDB for MySQL通过RDS MySQL的VPC地址访问RDS MySQL。

    登录RDS控制台,在实例基本信息页面查看内网地址。

    tablename RDS MySQL中的源表,本示例为goods表。
    username 访问RDS MySQL源数据库的账号。
    password username对应的密码。
  3. 通过CREATE TABLE在adb_demo数据库中创建目标表mysql_import_test,用于存储从RDS MySQL导入的数据。
    CREATE TABLE IF NOT EXISTS  mysql_import_test (
            goods_id bigint(20) NOT NULL,
            price double NOT NULL,
            class bigint(20) NOT NULL,
            name varchar(32) NOT NULL,
            update_time timestamp,
            PRIMARY KEY (goods_id)
     )
    DISTRIBUTED BY HASH(goods_id)                    
  4. 执行INSERT语句将RDS MySQL数据导入AnalyticDB for MySQL。
    • 执行INSERT INTO导入数据。
      insert into mysql_import_test
      select * from goods_external_table;                           
    • 执行INSERT OVERWRITE INTO导入数据。
      insert overwrite into mysql_import_test
      select * from goods_external_table