20.MySQL引擎
20.1.MySQL引擎
20.2.MySQL和ClickHouse中数据类型的对应关系
20.3.示例
20.MySQL引擎
20.1.MySQL引擎
MySQL引擎可实现对MySQL数据库的表执行插入和查询操作。
ClickHouse表结构可以不同于原始的MySQL表结构。
列名应当与原始MySQL表中的列名相同,但可以按任意顺序使用其中的一些列。
列的数据类型可能与原始的MySQL表中的列类型不同,ClickHouse尝试进行数据类型转换。
执行表引擎:
ENGINE = MySQL('host:port', 'database', 'table', 'user', 'password'[, replace_query, 'on_duplicate_clause']);
引擎参数:
1.host:port :MySQL server的地址。
2.database :MySQL数据库名称。
3.table : MySQL表名。
4.user : MySQL用户名。
5.password : MySQL用户密码。
6.replace_query :将INSERT INTO查询转换为REPLACE INTO查询的标识。如果replace_query=1, 查询将被替换。
7.on_duplicate_clause : 将ON DUPLICATE KEY ‘on_duplicate_clause’表达式添加到INSERT查询中。
例如: INSERT INTO t (c1,c2) VALUES (‘a’, 2) ON DUPLICATE KEY UPDATE c2 = c2 + 1, on_duplicate_clause表达式为: UPDATE c2 = c2 + 1。
如果使用on_duplicate_clause,需设置参数replace_query=0。如果同时传递replace_query=1和 on_duplicate_clause,ClickHouse将抛出异常。
20.2.MySQL和ClickHouse中数据类型的对应关系
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 |
20.3.示例
1.在MySQL创建表和插入数据
drop table test.test;
create table test.test (
id int NOT NULL AUTO_INCREMENT,
cnt int,
primary key (id)
);
insert into test.test (id,cnt) values (1,2);
select * from test.test;
2.在ClickHouse中创建MySQL引擎的表
DROP TABLE mysql_table_dup;
CREATE TABLE mysql_table_dup
(
id Int32,
cnt Int32
)
ENGINE = MySQL('xxx.xxx.xxx.xxx:3306', 'test', 'test', 'root', 'xxxxxxx', 0, 'UPDATE cnt=cnt+1');
效果图:
middleware :) CREATE TABLE mysql_table_dup
:-] (
:-] id Int32,
:-] cnt Int32
:-] )
:-] ENGINE = MySQL('xxx.xxx.xxx.xxx:3306', 'test', 'test', 'root', 'xxxxxxx', 0, 'UPDATE cnt=cnt+1');
CREATE TABLE mysql_table_dup
(
`id` Int32,
`cnt` Int32
)
ENGINE = MySQL('xxx.xxx.xxx.xxx:3306', 'test', 'test', 'root', 'xxxxxxx', 0, 'UPDATE cnt=cnt+1')
Ok.
0 rows in set. Elapsed: 0.003 sec.
middleware :) show tables;
SHOW TABLES
┌─name────────────┐
│ consumer │
│ daily │
│ mysql_table_dup │
│ queue │
└─────────────────┘
4 rows in set. Elapsed: 0.006 sec.
middleware :) select * from mysql_table_dup limit 10;
SELECT *
FROM mysql_table_dup
LIMIT 10
┌─id─┬─cnt─┐
│ 1 │ 2 │
└────┴─────┘
1 rows in set. Elapsed: 0.192 sec.
middleware :)
插入主键冲突的数据:
insert into mysql_table_dup_values(2,1);
select * from mysql_table_dup;
效果图:
middleware :) insert into mysql_table_dup values(2, 1);
INSERT INTO mysql_table_dup VALUES
Ok.
1 rows in set. Elapsed: 0.039 sec.
middleware :) select * from mysql_table_dup limit 10;
SELECT *
FROM mysql_table_dup
LIMIT 10
┌─id─┬─cnt─┐
│ 1 │ 2 │
│ 2 │ 1 │
└────┴─────┘
2 rows in set. Elapsed: 0.010 sec.
middleware :)
再到MySQL库中查看:
本文地址:https://blog.csdn.net/toto1297488504/article/details/111026941