全部产品

将MySQL数据导入AnalyticDB for MySQL

更新时间:2019-07-24 19:29:39

本文介绍如何通过AnalyticDB for MySQL映射表和INSERT OVERWRITE INTO或者INSERT INTO云数据库RDS MySQL 版(Relational Database Service,简称RDS)中的数据导入AnalyticDB for MySQL。

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

前提条件

  • 根据RDS for MySQL快速入门,准备好测试数据。

    注意:RDS for MySQL与AnalyticDB for MySQL必须在同一个VPC下,AnalyticDB for MySQL将通过RDS for MySQL的VPC地址访问RDS for MySQL。

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

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

实施步骤

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

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

  2. 通过CREATE TABLE,在adb_demo数据库中创建外部映射表goods_external_table

    1. CREATE TABLE IF NOT EXISTS goods_external_table (
    2. goods_id bigint(20) NOT NULL,
    3. price double NOT NULL,
    4. class bigint(20) NOT NULL,
    5. name varchar(32) NOT NULL,
    6. update_time timestamp,
    7. PRIMARY KEY (goods_id)
    8. )
    9. ENGINE='mysql'
    10. TABLE_PROPERTIES='{
    11. "url":"jdbc:mysql://mysql-vpc-address:3306/test_adb",
    12. "tablename":"goods",
    13. "username":"mysql-user-name",
    14. "password":"mysql-user-password"
    15. }'
    参数 说明
    ENGINE=’mysql’ 表示该表是外部表,使用的存储引擎是MySQL。
    TABLE_PROPERTIES 用于告知AnalyticDB for MySQL如何访问RDS for MySQL中的数据。
    url RDS for MySQL中的内网地址,即VPC连接地址。

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

    注意:目前仅支持AnalyticDB for MySQL通过RDS for MySQL的VPC地址访问RDS for MySQL。

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

    查看RDS连接地址

    tablename RDS for MySQL中的源表,本示例为goods表。
    username RDS for MySQL中访问test_adb数据库的账号

    password username对应的密码。
  3. 通过CREATE TABLE,在adb_demo数据库中创建目标表mysql_import_test用于存储从RDS for MySQL导入的数据。

    1. CREATE TABLE IF NOT EXISTS mysql_import_test (
    2. goods_id bigint(20) NOT NULL,
    3. price double NOT NULL,
    4. class bigint(20) NOT NULL,
    5. name varchar(32) NOT NULL,
    6. update_time timestamp,
    7. PRIMARY KEY (goods_id)
    8. )
    9. DISTRIBUTED BY HASH(goods_id)
  4. 执行INSERT语句将RDS for MySQL数据导入AnalyticDB for MySQL。

    • 执行INSERT INTO导入数据。

      1. insert into mysql_import_test
      2. select * from goods_external_table;
    • 执行INSERT OVERWRITE INTO导入数据。

      1. insert overwrite into mysql_import_test
      2. select * from goods_external_table