MySQL迁移ClickHouse

MySQL引擎用于将远程的MySQL服务器中的表映射到ClickHouse中,并允许您对表进行INSERTSELECT查询,以方便您在ClickHouse与MySQL之间进行数据交换。

MySQL数据库引擎会将对其的查询转换为MySQL语法并发送到MySQL服务器中,因此您可以执行诸如SHOW TABLESSHOW CREATE TABLE之类的操作。

但您无法对其执行以下操作:

  • RENAME
  • CREATE TABLE
  • ALTER
CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster]
ENGINE = MySQL('host:port', ['database' | database], 'user', 'password')

MySQL数据库引擎参数

  • host:port — 链接的MySQL地址。
  • database — 链接的MySQL数据库。
  • user — 链接的MySQL用户。
  • password — 链接的MySQL用户密码。

支持的类型对应

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 日期
DATETIME, TIMESTAMP 日期时间
BINARY 固定字符串

其他的MySQL数据类型将全部都转换为字符串

同时以上的所有类型都支持可为空

DEMO

mysql操作:

USE test;

CREATE TABLE `mysql_table` (
     `int_id` INT NOT NULL AUTO_INCREMENT,
     `float` FLOAT NOT NULL,
      PRIMARY KEY (`int_id`)
);
insert into mysql_table (`int_id`, `float`) VALUES (1,2);

select * from mysql_table;

clickhouse操作

CREATE DATABASE mysql_db ENGINE = MySQL('localhost:3306', 'test', 'my_user', 'user_password')

SHOW DATABASES

SHOW TABLES FROM mysql_db

SELECT * FROM mysql_db.mysql_table

INSERT INTO mysql_db.mysql_table VALUES (3,4)

SELECT * FROM mysql_db.mysql_table

文章作者: 凌云
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 凌云 !
  目录