clickhouse创建数据库
create database my_clickhouse;
clickhouse创建表 标准格式如下:
CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],
name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],
...
) ENGINE = engine
[ON CLUSTER cluster]
cluster是根据集群来名来确定的。 例子:
create table test.test_summergetree (
id Int32 comment 'id',
name String comment '名称',
money Decimal32(2) COMMENT '工资',
create_at DateTime comment '创建时间'
) engine = SummingMergeTree()
order by
id partition by toYYYYMM(create_at) primary key id sample by id TTL create_at + INTERVAL 1 MONTH DELETE;
创建分布式表 标准格式如下:
CREATE TABLE IF NOT EXISTS all_hits ON CLUSTER cluster (p Date, i Int32) ENGINE = Distributed(cluster, database,table, sharding_key)
分布式引擎参数:服务器配置文件中的集群名,远程数据库名,远程表名,数据分片键(可选)。 下面是样例:
CREATE TABLE test_summergetree_distributed (
`float` Nullable(Float64),
`str` Nullable(String),
`test` Nullable(Int64),
`create_at` DateTime
) ENGINE = Distributed('default', 'test', 'test_summergetree', rand())
clickhouse插入数据 标准格式:
INSERT INTO [db.]table [(c1, c2, c3)] VALUES (v11, v12, v13), (v21, v22, v23), ...
写入数据也可以通过select结果写入,例子如下:
INSERT INTO [db.]table [(c1, c2, c3)] SELECT ...
写入性能问题: 在进行INSERT时将会对写入的数据进行一些处理,按照主键排序,按照月份对数据进行分区等。所以如果在您的写入数据中包含多个月份的混合数据时,将会显著的降低INSERT的性能。为了避免这种情况: