AnalyticDB MySQL版支持通过外表导入导出数据。本文介绍如何通过AnalyticDB MySQL的外表将云数据库RDS MySQL中的数据导入至AnalyticDB MySQL。
前提条件
- RDS MySQL实例需与AnalyticDB MySQL集群在同一个VPC下,且该VPC网段需加入RDS MySQL实例的白名单中。详细操作步骤,请参见设置RDS的IP白名单。
- 需在RDS MySQL实例上完成创建数据库和连接实例等操作,并准备好相关测试数据。详细操作步骤,请参见创建数据库和账号和连接RDS MySQL实例。
本文示例中,测试所用的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 MySQL集群是弹性模式,您需要在集群信息页面的网络信息区域,打开启用ENI网络的开关。

操作步骤
- 连接目标AnalyticDB MySQL集群。详细操作步骤,请参见连接集群。
- 创建目标数据库。详细操作步骤,请参见创建数据库。
本示例中,AnalyticDB MySQL集群的目标库名为adb_demo
。
- 创建外部映射表。
使用以下命令在目标库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 MySQL访问RDS MySQL数据的访问方式。
|
url |
RDS MySQL实例中的内网地址(即VPC连接地址)和源库名(本文示例中为test_adb )。RDS地址信息的查看方法,请参见查看或修改内外网地址和端口。
格式:"jdbc:mysql://mysql-vpc-address:3306/rds-database-name" 。
示例:jdbc:mysql://rm-****************.mysql.rds.aliyuncs.com:3306/test_adb 。
|
tablename |
RDS MySQL中源表名,本文示例中为goods 。
|
username |
需要访问RDS MySQL源库的账号。 |
password |
以上账号对应的密码。 |
- 创建目标表。
使用以下命令在目标数据库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);
- 将源RDS MySQL实例中的数据导入至目标AnalyticDB MySQL集群中。
语法如下:
REPLACE INTO mysql_import_test
SELECT * FROM goods_external_table;
后续步骤
导入完成后,您可以登录
AnalyticDB MySQL的目标库
adb_demo
中,执行如下命令查看并验证源表数据是否成功导入至目标
mysql_import_test
表中:
SELECT * FROM mysql_import_test LIMIT 100;