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

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─┐
│  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库中查看:

本文地址:https://blog.csdn.net/toto1297488504/article/details/111026941

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐