# ClickHouse Reader
ClickHouseReader 插件支持从 [ClickHouse](https://clickhouse.tech)数据库读取数据。
## 示例
### 表结构及数据信息
假定需要的读取的表的结构以及数据如下:
`sql
--8<-- "sql/clickhouse.sql"
`
## 配置 json 文件
下面的配置文件表示从 ClickHouse 数据库读取指定的表数据并打印到终端
=== "job/clickhouse2stream.json"
`json
--8<-- "jobs/clickhousereader.json"
`
将上述配置文件保存为 job/clickhouse2stream.json
### 执行采集命令
执行以下命令进行数据采集
`shell
bin/addax.sh job/clickhouse2stream.json
`
其输出信息如下(删除了非关键信息)
`
--8<-- "output/clickhousereader.txt"
`
## 参数说明
parameter 配置项支持以下配置
配置项 | 是否必须 | 类型 | 默认值 | 描述 |
:------- | :------: | ------ | ------ | -------------------------------------------------------------------------------------------------------------------- |
jdbcUrl | 是 | array | 无 | ClickHouse JDBC 连接信息 ,可按照官方规范填写连接附件控制信息。具体请参看[官方文档][1] |
username | 是 | string | 无 | 数据源的用户名 |
password | 否 | string | 无 | 数据源指定用户名的密码 |
table | 是 | array | 无 | 所选取的需要同步的表 ,当配置为多张表时,用户自己需保证多张表是同一 schema 结构 |
column | 是 | array | 无 | 所配置的表中需要同步的列名集合, 使用 JSON 的数组描述字段信息。用户使用 * 代表默认使用所有列配置,例如 ["*"] |
splitPk | 否 | string | 无 | 希望使用 splitPk 代表的字段进行数据分片,Addax 因此会启动并发任务进行数据同步,这样可以大大提供数据同步的效能 |
autoPk | 否 | bool | false | 是否自动猜测分片主键,3.2.6 版本引入 |
where | 否 | string | 无 | 筛选条件 |
querySql | 否 | array | 无 | 使用 SQL 查询而不是直接指定表的方式读取数据,当用户配置 querySql 时,ClickHouseReader 直接忽略 table、column、where 条件的配置 |
[1]: https://github.com/yandex/clickhouse-jdbc
## 支持的数据类型
目前 ClickHouseReader 支持大部分 ClickHouse 类型,但也存在部分个别类型没有支持的情况,请注意检查你的类型。
下面列出 ClickHouseReader 针对 ClickHouse 类型转换列表:
Addax 内部类型 | ClickHouse 数据类型 |
-------------- | ----------------------------------------------------------------------- |
Long | Uint8, Uint16, Uint32, Uint64, Int8, Int16, Int32, Int64, Enum8, Enum16 |
Double | Float32, Float64, Decimal |
String | String, FixedString(N) |
Date | Date, DateTime, DateTime64 |
Boolean | UInt8 |
Bytes | String |
## 限制
除上述罗列字段类型外,其他类型均不支持,如 Array、Nested 等