准备
如果需要使用jdbc引擎,官网介绍了需要利用clickhouse-jdbc-bridge 工具。
所以我们在git上选择release1.0.1的版本,为什么不用v2.0.0,因为在使用时会抛个找不到驱动的异常:
Caused by: java.sql.SQLException: No suitable driver found for jdbc:postgresql://dev-111:5432/report?user=dev&password=123456
at java.sql.DriverManager.getConnection(DriverManager.java:689)
at java.sql.DriverManager.getConnection(DriverManager.java:270)
at ru.yandex.clickhouse.jdbcbridge.impl.JdbcDataSource.getConnection(JdbcDataSource.java:410)
at ru.yandex.clickhouse.jdbcbridge.impl.JdbcDataSource.inferTypes(JdbcDataSource.java:562)
v1.0.1的版本可以通过java -jar clickhouse-jdbc-bridge-<version>.jar --help
查看执行参数。
通过--driver-path
可以指定驱动路径。
--driver-path
Path to directory, containing JDBC drivers
当然如果是mysql就不用这么麻烦,直接可以使用Mysql引擎。
CREATE TABLE mysql_table
(
`float_nullable` Nullable(Float32),
`int_id` Int32
)
ENGINE = MySQL('localhost:3306', 'test', 'test', 'bayonet', '123')
用法
这里我需要用jdbc链接的是postgre,所以要先下载一个驱动 postgresql-<version>.jar
,然后放在clickhouse-jdbc-bridge的目录下,driver-path指定为当前目录,启动命令:java -jar clickhouse-jdbc-bridge-1.0.1.jar --driver-path ./
。 出现Server is ready to accept connections表示正常启动了。
2020-12-18 18:22:34,899 [ main ] {JdbcBridge} <INFO> - Will bind to localhost/127.0.0.1:9019
2020-12-18 18:22:34,937 [ main ] {JdbcBridge} <INFO> - Starting server
2020-12-18 18:22:34,986 [ main ] {JdbcBridge} <INFO> - Server is ready to accept connections
测试链接postgresql,如果这这种数据库,注意端口后面的database_name是必须要写的。不然就会报错。
SELECT count(1) FROM jdbc('jdbc:postgresql://127.0.0.1:5432/database_name?user=test&password=test', 'schema', 'table') LIMIT 1
┌─count()─┐
│ 4455 │
└─────────┘
1 rows in set. Elapsed: 0.072 sec. Processed 4.46 thousand rows, 22.27 KB (61.57 thousand rows/s., 307.85 KB/s.)