MySQL引擎用于将远程的MySQL服务器中的表映射到ClickHouse中,并允许您对表进行INSERT
和SELECT
查询,以方便您在ClickHouse与MySQL之间进行数据交换。
MySQL
数据库引擎会将对其的查询转换为MySQL语法并发送到MySQL服务器中,因此您可以执行诸如SHOW TABLES
或SHOW 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