15_clickhouse,MySQL引擎;MySQL和ClickHouse中数据类型的对应关系

Posted 涂作权的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了15_clickhouse,MySQL引擎;MySQL和ClickHouse中数据类型的对应关系相关的知识,希望对你有一定的参考价值。

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中数据类型的对应关系

MySQLClickHouse
UNSIGNED TINYINTUInt8
TINYINTInt8
UNSIGNED SMALLINTUInt16
SMALLINTInt16
UNSIGNED INT, UNSIGNED MEDIUMINTUInt32
INT, MEDIUMINTInt32
UNSIGNED BIGINTUInt64
BIGINTInt64
FLOATFloat32
DOUBLEFloat64
DATEDate
DATETIME, TIMESTAMPDateTime
BINARYFixedString

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─┐
│  12 │
└────┴─────┘

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─┐
│  12 │
│  21 │
└────┴─────┘

2 rows in set. Elapsed: 0.010 sec. 

middleware :) 

再到MySQL库中查看:

以上是关于15_clickhouse,MySQL引擎;MySQL和ClickHouse中数据类型的对应关系的主要内容,如果未能解决你的问题,请参考以下文章

ClickHouse-尚硅谷(14. 高级-MaterializeMySQL 引擎)学习笔记

ClickHouse-尚硅谷(14. 高级-MaterializeMySQL 引擎)学习笔记

Logistics_Day15:ClickHouse 存储引擎

MySQL 引擎如何从 ClickHouse 中的 MySQL 数据库中获取数据?

如何将clickhouse的数据同步到mysql?

大数据ClickHouse进阶(二十):MaterializeMySQL物化引擎深入了解