两种驱动:
ru.yandex.clickhouse.clickhousedriver
com.clickhouse.jdbc.ClickHouseDriver
数据包的格式顺序
字段名+字段类型+对应的数据
(1):
如果不是com类型的驱动,每个数据字符一一映射为对应的ascii码
格式为:字段名\r\n字段类型\\r\n数据
一行数据里面的不同数据类型用 \n 隔开,
不同行数据之间用 \r\n 隔开
(2):
如果是com类型驱动,则不会有转义字符隔开
字段名字段类型数据 紧凑在一起
这里会有一些规律
- 字段名处会先指出后续这个字段的长度是多少,再跟着字段名。比如 4name
- 字段类型处也是如此 比如6String
- 对应的数据所占的字节数则需要分情况
- Int UInt Float 这种会根据对应的类型固定了取几个字节
- Date,DateTime这种也会固定几个字节
- String这种并不会指定,因为拿到的name数据可能很长很长,一个字节表示不完,需要根据当前buffer流求出,此处的规则是如果当前字节的最高位是 1 则说明还没完,累加完当前的字节完还要取下一个字节再判断
两种对应例子: