命令行客户端 本页面介绍云数据库ClickHouse如何通过命令行客户端进行连接。 本节演示命令行客户端通过TCP端口9000连接云数据库ClickHouse。 1. 根据云数据库ClickHouse版本下载对应客户端。 2. 使用下列命令连接集群。 clickhouseclient host port user password 参数说明: host:集群节点ip地址。 port:host地址参数连接串上显示的端口号。 user:数据库用户名。 password:数据库用户密码。 更多详细的参数可以使用 clickhouseclient help 查看。 3. 示例。 以一个2节点的单副本集群为例,演示命令行客户端操作,示例集群节点信息如下:集群名inst2shards1replicas。 ClickHouse节点IP TCP端口 HTTP端口 分片(shard) 副本数量 A.A.A.207 9000 8123 1 1 A.A.A.208 9000 8123 2 1 连接命令行客户端。 clickhouseclient h IP地址 port TCP端口 u 用户名 password 密码 创建表。 集群模式下创建表分为两个步骤,第一步创建本地表,第二步是创建分布式表。如果只创建本地表而不创建分布式表,那么本地表的数据仅所在节点可见其它节点不可见。 创建本地表。 sql CREATE TABLE IF NOT EXISTS tutorial.eventslocal ON CLUSTER 'inst2shards1replicas' ( tsdate Date, tsdatetime DateTime, userid Int64, eventtype String, siteid Int64, grouponid Int64, categoryid Int64, merchandiseid Int64, searchtext String ) ENGINE ReplicatedMergeTree('/clickhouse/tables/{shard}/tutorial/eventslocal','{replica}') PARTITION BY tsdate ORDER BY(tsdate,toStartOfHour(tsdatetime),siteid,eventtype) SETTINGS indexgranularity 8192; 其中,ON CLUSTER语法表示分布式DDL,即执行一次就可在集群所有实例上创建同样的本地表。Tutorial和 eventslocal分别是数据库和本地表名,inst2shards1replicas是集群名。ReplicatedMergeTree是表引擎,PARTITION BY指定分区键。 集群标识符{cluster}、分片标识符{shard}和副本标识符{replica}来自复制表宏配置,即配置文件中一节的内容,配合 ON CLUSTER语法一同使用,可以避免建表时在每个实例上反复修改这些值。 创建分布式表。 sql CREATE TABLE IF NOT EXISTS tutorial.eventsall ON CLUSTER ‘inst2shards1replicas’ AS tutorial.eventslocal ENGINE Distributed(inst2shards1replicas,tutorial,eventslocal,rand()); 创建分布式表是读时检查的机制,也就是说对创建分布式表和本地表的顺序并没有强制要求。 插入数据。 sql insert into eventsall (tsdate,tsdatetime,userid,eventtype,siteid,grouponid,categoryid,merchandiseid,searchtext)values('20200801','20200801 09:30:01',10009,'event1',10,20,30,40,'search text'); insert into eventsall (tsdate,tsdatetime,userid,eventtype,siteid,grouponid,categoryid,merchandiseid,searchtext)values('20200802','20200802 09:30:01',10009,'event1',10,20,30,40,'search text'); insert into eventsall (tsdate,tsdatetime,userid,eventtype,siteid,grouponid,categoryid,merchandiseid,searchtext)values('20200803','20200802 09:30:01',10009,'event2',10,20,30,40,'search text'); insert into eventsall (tsdate,tsdatetime,userid,eventtype,siteid,grouponid,categoryid,merchandiseid,searchtext)values('20200804','20200803 10:30:01',10009,'event3',10,20,30,40,'search text'); insert into eventsall (tsdate,tsdatetime,userid,eventtype,siteid,grouponid,categoryid,merchandiseid,searchtext)values('20200805','20200804 11:30:01',10009,'event4',10,20,30,40,'search text'); 查看分布式表。 查看本地表。 查看A.A.A.207节点。 查看A.A.A.208节点。 可以发现数据分布在不同的节点上。由此说明数据实际上保存在各个节点的本地表中,而分布式表可以看做一个视图,将本地表的数据联合起来。