通过外表导入至数仓版
AnalyticDB for MySQL支持通过外表导入导出数据。本文介绍如何通过外表将云数据库RDS MySQL中的数据导入至AnalyticDB for MySQL。
前提条件
RDS MySQL实例需与AnalyticDB for MySQL集群位于同一个VPC,即所在专有网络的VPC ID相同。
登录RDS控制台,单击实例ID,在数据库连接页面的网络类型位置,查看RDS MySQL实例所在的VPC ID。
登录AnalyticDB MySQL控制台,单击集群ID,在集群信息页面的网络信息位置,查看AnalyticDB for MySQL集群所在的VPC ID。
已将AnalyticDB for MySQL集群的VPC网段加入RDS MySQL实例的白名单中。详细操作步骤,请参见设置RDS的IP白名单。
需在RDS MySQL实例上完成创建数据库和连接实例等操作,并准备好相关测试数据。详细操作步骤,请参见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 for MySQL集群是弹性模式,您需要在集群信息页面的网络信息区域,打开启用ENI网络的开关。
开启和关闭ENI网络会导致数据库连接中断大约2分钟,无法读写。请谨慎评估影响后再开启或关闭ENI网络。
操作步骤
连接目标AnalyticDB for MySQL集群。详细操作步骤,请参见连接集群。
创建目标数据库。详细操作步骤,请参见创建数据库。
本示例中,AnalyticDB for 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", "charset":"utf8" }';
参数
说明
参数
说明
ENGINE='mysql'
外部表的存储引擎说明,本文使用的是MySQL。
TABLE_PROPERTIES
AnalyticDB for MySQL访问RDS MySQL数据的访问方式。
url
RDS MySQL实例中的内网地址(即VPC连接地址)和源库名(本文示例中为
test_adb
)。RDS地址信息的查看方法,请参见查看或修改内外网地址和端口。格式:
"jdbc:mysql://mysql-vpc-address:3306/rds-database-name"
。示例:
jdbc:mysql://rm-bp1hem632****.mysql.rds.aliyuncs.com:3306/test_adb
。tablename
RDS MySQL中源表名,本文示例中为
goods
。username
需要访问RDS MySQL源库的账号。
password
以上账号对应的密码。
charset
MySQL字符集,取值说明:
gbk
utf8(默认值)
utf8mb4
创建目标表。
使用以下命令在目标数据库
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 for MySQL集群中。
REPLACE INTO mysql_import_test SELECT * FROM goods_external_table;
后续步骤
导入完成后,您可以登录AnalyticDB for MySQL的目标库adb_demo
中,执行如下命令查看并验证源表数据是否成功导入至目标mysql_import_test
表中:
SELECT * FROM mysql_import_test LIMIT 100;
- 本页导读 (1)
- 前提条件
- 操作步骤
- 后续步骤