Linux怎么切换到clickhouse,三.Clickhouse 数据类型及数据类型转换(clichouse 极简教程系列)...

clickhouse数据类型比较丰富

基本类型分为:

1.整形1UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64

U开头的表示无符号类型,表示范围从0开始,后面的数字表示 位数(bit) 表示范围为 0到2^N-1

U开头: 非U开头: -2^N/2 到 (2^N)/2-1

例如 int8 表示 8位 表示范围为 -128 到 127

​ Uint8因为表示范围 0-255

2,枚举类型

A.枚举类型实际是整形的一个变种,通过映射map进行转换,map的key值进行排序.

B.枚举类型在排序(ORDER BY)时候特别注意,它不会按内容来排序,而是按枚举的数字key

目前有两个:

Enum8 和 Enum16

其对应的是int8 和 int16

例如:

1Enum8('hello' = 1, 'world' = 2)

这里特别说明一下,Enum是使用有符号的整形进行映射,因此负数也是可以的,例如:

1Enum8('test'=-1)

3.字符串

1.FixedString(N) 定字符串,类似CHAR

A.N是最大字节数(Byte),不是字符长度,如果是UTF8字符串,那么就会占用3字节,GBK会占用2字节.

B.当内容少于N,数据库会自动在右填充空字节(null byte)(跟PGsql不一样,PGsql填充的是空格),当内容大于N时候,会抛出错误.

C.当写入内容后面后空字节,系统不会自动去裁剪,查询的时候也会被输出(mysql不会输出)

D.查询时候,它会把添加的空字符串一同输出

E.FixedString(N)比String 支持更少的方法

2.String️无限长字符串

可以用来替换 VARCHAR ,BLOB,CLOB 等数据类型

PS:clickhouse没有编码的概念,字符串存储时候就是以字节流方式存放.如果是存放文本,建议使用UTF-8,使用过程只要客户端也是使用UTF-8那么就无需转码.而一些函数,例如lengthUTF8只会在内容是UTF8时候返回才是对的.

###4 Boolean

不好意思,clickhouse没有这个数据类型,你可以用 int8来替代(个人感觉有点浪费)

5.时间类型DateTime

DateTime实际存储时候是Unsigned 4个字节的整数Unix时间戳.

A.因为是Unsigned的整形,因此不能支持1970年1月1日(UTC/GMT的午夜)以前的时间.

B.时区会影响输入和输出.请使–use_client_time_zone 进行切换时区,服务端启动时候最好使用TZ=X来保证时区

Date两字节存储的时间戳,最多到2038年

6.Array(T) 数组类型,

T是一个基本类型,包括array在内.

Clickhouse不建议使用多维数组,因为MergeTree系列引擎不能很好支持多维数组

7,Tuple 元数组

A可以认为是一种不能变的单维数组

B不能被内存表以外的引擎存储,一般用于临时数据,特别是in查询的时候用.

8.结构:Nested(Name1 Type1, Name2 Type2, …)

类似于一种Map的格式.声明引擎的时候要明确声明结构格式.详细看引擎的介绍种的AggregatingMergeTree

例如:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35CREATE TABLE test.visits(

CounterID UInt32,

StartDate Date,

Sign Int8,

IsNew UInt8,

VisitID UInt64,

UserID UInt64,

...

Goals Nested

(

ID UInt32,

Serial UInt32,

EventTime DateTime,

Price Int64,

OrderID String,

CurrencyID UInt32

),

...) ENGINE = CollapsingMergeTree(StartDate, intHash32(UserID), (CounterID, StartDate, intHash32(UserID), VisitID), 8192, Sign)

2.统计函数

支持使用统计函数作为数据类型,有点像PGSQL,需要启动时候加参数开启,需要用AggregatingMergeTree引擎,也用得比较少,这里要讲就会很长了,所以->_>详情请看官方文档.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值