ClickHouse入门:表引擎-JDBC

it2023-07-09  70

前言 使用到的插件及数据库版本: Postgresql:10.8 ClickHouse:20.9.3.45 Postgresql-JDBC-driver:42.2.5

文章目录

简介安装配置JDBC表引擎声明方式查询测试JDBC函数通过代理服务访问其它数据库

简介

JDBC表引擎可以对接Mysql、Postgresql、SQLite等数据库,但是JDBC表引擎不能单独完成对接工作,需要依赖clickhouse-jdbc-bridge的查询代理服务,clickhouse-jdbc-bridge是java语言实现的sql代理服务,项目地址为:

https://github.com/ClickHouse/clickhouse-jdbc-bridge

安装配置

构建clickhouse-jdbc-bridge 可直接根据上一步的地址编译项目,生成clickhouse-jdbc-bridge-1.0.jar的服务jar包

启动clickhouse-jdbc-bridge代理服务

java -jar ./clickhouse-jdbc-bridge-1.0.jar --driver-path lib --listen-host 127.0.0.1

参数说明: –driver-path jdbc驱动存放的路径 –listen-host 代理服务绑定的IP及端口(端口默认为9019) 启动后,日志如下:

配置clickhouse全局配置,添加代理服务的访问地址

vi /etc/clickhouse-server/config.xml

添加如下配置:

<jdbc_brige> <host>127.0.0.1</host> <port>9019</port> </jdbc_brige>

重启ClickHouse-Server

JDBC表引擎声明方式

ENGINE = JDBC(‘JDBC:url’, ‘database’, ‘table’)

参数说明: url:jdbc连接串 database:对接的表所在数据库 table:要对接的表

创建一张映射表:

CREATE TABLE nt_order_payment ( `id` Int32, `order_no` String ) ENGINE JDBC('jdbc:postgresql://xxxx:5432/test?user=xxx&password=xxx', '', 'nt_order_payment');

查询测试

建表

执行查询

select count(0) from nt_order_payment;

这时候可以去代理服务clickhouse-jdbc-bridge查看日志输出: 日志显示,jdbc表引擎首先会去ping以下代理服务,ping通之后会向代理服务发送查询请求

JDBC函数通过代理服务访问其它数据库

例子

select id,order_no from jdbc('jdbc:postgresql://xxx:5432/xxx?user=xxx&password=xxx', '', 'nt_order_payment') limit 1;

最新回复(0)