美文网首页数据库js css htmlmysql
ClickHouse表引擎之MySQL引擎

ClickHouse表引擎之MySQL引擎

作者: 这货不是王马勺 | 来源:发表于2023-03-22 16:16 被阅读0次

进入clickhouse,创建测试库:

CREATE DATABASE IF NOT EXISTS testwwj;
show databases;
use testwwj;

创建链接表的语法如下,可以理解为clickhouse作为MySQL客户端:

CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
    name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1] [TTL expr1],
    name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2] [TTL expr2],
    ...
) ENGINE = MySQL('host:port', 'database', 'table', 'user', 'password'[, replace_query, 'on_duplicate_clause'])
SETTINGS
    [ connection_pool_size=16, ]
    [ connection_max_tries=3, ]
    [ connection_wait_timeout=5, ]
    [ connection_auto_close=true, ]
    [ connect_timeout=10, ]
    [ read_write_timeout=300 ]
;

参数说明:

  • host:port— MySQL 服务器地址。
  • database— 远程数据库名称。
  • table— 远程表名。
  • user— MySQL 用户。
  • password- 用户密码。
  • replace_query— 将INSERT INTO查询转换为REPLACE INTO. 如果replace_query=1,则查询被替换。
  • 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。请参阅MySQL 文档以查找on_duplicate_clause可以与该ON DUPLICATE KEY子句一起使用的内容。
    要指定on_duplicate_clause您需要传递0给replace_query参数。如果同时传递replace_query = 1和on_duplicate_clause,ClickHouse 会生成异常。

此时,简单的 WHERE 子句(例如 =, !=, >, >=, <, <=)是在 MySQL 服务器上执行。

注:MySQL 引擎不支持 可为空 数据类型,因此,当从MySQL表中读取数据时,NULL 将转换为指定列类型的默认值(通常为0或空字符串)。

创建一张MySQL引擎测试表:

CREATE TABLE DML_COPY_175_DBTEST
(
    `Id` UInt32,
    `Date` Date,
    `User_name` String,
    `DB_IP` String,
    `DB_name` String,
    `SQL` String,
    `Comment` String,
    `rawdata` String  
)ENGINE=MySQL('10.10.1.175:3306','DBTEST','DML_COPY','wenjie.wang', '123456');

show tables;

然后我们建立ClickHouse的MergeTree表:

CREATE TABLE DML_COPY_2021
(
    `Id` UInt32,
    `Date` Date,
    `User_name` String,
    `DB_IP` String,
    `DB_name` String,
    `SQL` String,
    `Comment` String,
    `rawdata` String  
)engine=MergeTree
partition by (Date)
primary key (Date)
order by (Date)
;

show tables;

将MySQL所需数据导入:

INSERT INTO DML_COPY_2021
SELECT `Id` ,
    `Date` ,
    `User_name` ,
    `DB_IP` ,
    `DB_name` ,
    `SQL` ,
    `Comment` ,
    `rawdata` 
FROM   DML_COPY_175_DBTEST
WHERE  `Date` < '2022-01-01'
;

检查数据:

select max(Date) from DML_COPY_2021;

官网:

https://clickhouse.com/docs/zh/engines/table-engines/integrations/mysql

相关文章

网友评论

    本文标题:ClickHouse表引擎之MySQL引擎

    本文链接:https://www.haomeiwen.com/subject/ketbrdtx.html