本文介绍如何从阿里云关系型数据库RDS(Relational Database Service) MySQL中导入数据至云数据库ClickHouse。
注意事项
- RDS MySQL为付费服务。计费详情,请参见收费项、计费方式与价格。
- 请确保数据源RDS MySQL实例和目的云数据库ClickHouse集群在同一地域并使用相同的VPC。
前提条件
- 已创建云数据库ClickHouse集群,如何创建,请参见新建集群。
- 已创建RDS MySQL实例,如何创建,请参见创建RDS MySQL实例。
- 已为RDS MySQL实例创建数据库和账号,如何创建,请参见创建数据库和账号。
- 已将云数据库ClickHouse集群的IP地址添加到RDS MySQL的白名单中,如何添加,请参见设置IP白名单。
说明 您可以通过select * from system.clusters;
命令查看云数据库ClickHouse集群的IP地址。
操作步骤
- 创建RDS MySQL表并写入数据
- 登录RDS管理控制台。
- 在实例列表页面,单击目标实例ID。
- 单击右上方的登录数据库。
- 在登录实例页面,输入数据库账号和密码,单击登录。
- 执行建表语句,以下示例为在数据库testdb中创建表mysql_test_table。
CREATE TABLE testdb.mysql_test_table (
v1 Int NOT NULL,
v2 Int DEFAULT NULL,
v3 Float DEFAULT NULL
) ENGINE=InnoDB;
- 向RDS MySQL表写入数据。
insert into testdb.mysql_test_table values (4,4,4.0),(1,1,2.0);
- 创建云数据库ClickHouse表
- 登录云数据库ClickHouse控制台。
- 在集群列表页面,单击目标集群ID。
- 单击右上方的登录数据库。
- 在登录实例页面,输入数据库账号和密码,单击登录。
- 创建本地表。
create table default.clickhouse_test_table ON CLUSTER default (
v1 Int32,
v2 Nullable(Int32),
v3 Nullable(Float32)
) ENGINE = MergeTree ORDER BY v1;
说明
- 云数据库ClickHouse表的结构类型需与RDS MySQL表对应。具体映射关系,请参见数据类型映射。
- RDS MySQL建表语句中未指定NOT NULL的列,值可以为NULL。同时,云数据库ClickHouse建表语句中的对应列使用Nullable进行标识。
- 创建分布式表。
说明 如果您只需要导入RDS MySQL数据至本地表,可跳过此步骤。
CREATE TABLE clickhouse_test_table_distributed ON CLUSTER default
AS clickhouse_test_table
ENGINE = Distributed(default, default, clickhouse_test_table, rand());
- 导入RDS MySQL数据至云数据库ClickHouse
语法如下。
insert into <ClickHouse表名> select * from mysql('<RDS MySQL连接地址>:<端口>', '<RDS MySQL数据库>','<RDS MySQL表名>', '<RDS MySQL数据库账号>', '<RDS MySQL数据库账号的密码>')
示例如下。
insert into clickhouse_test_table_distributed select * from mysql('rm-bp16t9h3999xb****.mysql.rds.aliyuncs.com:3306','testdb','mysql_test_table','test','123456Aa');
- 查询导入到云数据库ClickHouse的数据
select * from clickhouse_test_table_distributed;
说明 如果您导入的是本地表,请将查询语句中的分布式表名更换为本地表名,再进行查询。
查询结果如下。
┌─v1─┬─v1─┬─v3─┐
│ 4 │ 4 │ 4.0 │
│ 1 │ 1 │ 2.0 │
└───┴───┴───┘
数据类型映射
RDS MySQL类型 |
ClickHouse类型 |
Unsigned tinyint |
UInt8 |
Tinyint |
Int8 |
Unsigned smallint |
UInt16 |
Smallint |
Int16 |
Unsigned int,Unsigned mediumint |
UInt32 |
Int,Mediumint |
Int32 |
Unsigned bigint |
UInt64 |
Bigint |
Int64 |
Float |
Float32 |
Double |
Float64 |
Date |
Date |
Datetime,Timestamp |
DateTime |
Binary |
FixedString |
其他 |
String |