您可以将RDS MySQL的数据导入云原生数据仓库 AnalyticDB MySQL 版,在数据仓库中完成多源数据整合和复杂查询分析,也可以将经过汇总的关键指标写入RDS MySQL。
前提条件
AnalyticDB for MySQL集群的产品系列为湖仓版。
RDS MySQL实例与AnalyticDB for MySQL集群位于同一VPC。
已在AnalyticDB for MySQL控制台集群信息页面的网络信息栏启用ENI网络开关。
已将AnalyticDB for MySQL的VPC网段加入RDS MySQL实例的白名单中。详细操作步骤,请参见设置IP白名单。
示例数据说明
本文示例的RDS MySQL数据库名为test_adb
,并在该库中创建了一张名为person
的表,示例如下:
CREATE TABLE IF NOT EXISTS test_adb.person(
id int,
name varchar(1023),
age int
);
向person
表中插入数据,示例如下:
INSERT INTO test_adb.person values
(1, 'james', 10),
(2, 'bond', 20),
(3, 'jack', 30),
(4, 'lucy', 40);
操作步骤
进入SQL开发编辑器。
登录云原生数据仓库AnalyticDB MySQL控制台,在左上角选择集群所在地域。在左侧导航栏,单击集群列表,在湖仓版页签下,单击目标集群ID。
在左侧导航栏,单击 。
引擎选择Xihe,资源组选择Interactive型资源组。
执行以下语句,创建外部数据库。示例如下:
CREATE EXTERNAL DATABASE adb_external_db;
执行以下语句,创建外表。示例如下:
说明AnalyticDB for MySQL外表和RDS MySQL中表的列名称、数量、顺序、字段类型需要相同。
AnalyticDB for MySQL外表的参数说明,请参见CREATE EXTERNAL TABLE。
CREATE EXTERNAL TABLE IF NOT EXISTS adb_external_db.person ( id int, name varchar(1023), age int )ENGINE = 'MYSQL' TABLE_PROPERTIES = '{ "url":"jdbc:mysql://mysql-address:3306/test_adb", "tablename":"person", "username":"mysql-user-name", "password":"mysql-user-password", "charset":"utf8" }';
查询数据。
外表创建成功后,您可以在AnalyticDB for MySQL中通过SELECT查询RDS MySQL中
person
表的数据。SELECT * FROM adb_external_db.person;
返回结果如下:
+------+-------+------+ | id | name | age | +------+-------+------+ | 1 | james | 10 | | 2 | bond | 20 | | 3 | jack | 30 | | 4 | lucy | 40 | +------+-------+------+ 4 rows in set (0.35 sec)
将数据写入RDS MySQL。
INSERT INTO adb_external_db.person SELECT 5, 'lily', 20;
执行以下语句,创建目标数据库。
CREATE DATABASE adb_demo;
执行以下语句,在目标数据库
adb_demo
中创建一张名为mysql_import_test
的目标表,用于存储从RDS MySQL导入的数据。CREATE TABLE IF NOT EXISTS mysql_import_test ( id int, name varchar(1023), age int, PRIMARY KEY (id) ) DISTRIBUTED BY HASH(id);
执行以下语句,将RDS MySQL实例中的数据导入至目标AnalyticDB for MySQL集群中。
INSERT INTO mysql_import_test SELECT * FROM adb_external_db.person;
执行以下语句,查询AnalyticDB for MySQL表
mysql_import_test
数据。SELECT * FROM mysql_import_test;
返回结果如下:
+------+-------+------+ | id | name | age | +------+-------+------+ | 1 | james | 10 | | 2 | bond | 20 | | 4 | lucy | 40 | | 5 | lily | 20 | | 3 | jack | 30 | +------+-------+------+ 5 rows in set (0.37 sec)