背景
ck可以用过clickhouse-jdbc-bridge技术来直接访问各数据库,包括oracle,oracle也可以用jdbc,odbc没调研过
规划
jdbc-bridge是面向客户端的技术,也就是说,那个节点有客户端,哪个节点就需要???
安装配置
需要准备的文件
clickhouse-jdbc-bridge
https://github.com/ClickHouse/clickhouse-jdbc-bridge
理论上需要下载源码然后用mavne打包,但提供了打包好的,可以推测用的是maven的shade插件
oracle的驱动
ojdbc8-12.2.0.1.jar 可用于11g
创建目录
注意,jdbc-bridge对目录有要求,相对位置是固定的,上级目录随意。
json
|--clickhouse-jdbc-bridge-2.0.7-shaded.jar
|--noput.out
|--drivers
|--ojdbc8-12.2.0.1.jar
|--config
|-- datasources
|-- oracle.json
sudo mkdir -p /app/clickhouse/clickhouse-jdbc-bridge
sudo chown -R bigdata:bigdata /app 注意,这里权限可以不用clickhouse用户,别的用户也可以
sudo chmod 755 -R /app
cd /app/clickhouse/clickhouse-jdbc-bridge
mkdir -p config/datasources
mkdir drivers
最终的目录结构
json
|--app/clickhouse
|--clickhouse-jdbc-bridge
|--clickhouse-jdbc-bridge-2.0.7-shaded.jar
|--noput.out
|--drivers
|--ojdbc8-12.2.0.1.jar
|--config
|-- datasources
|-- oracle.json
配置文件
cd /app/clickhouse/clickhouse-jdbc-bridge/config/datasources
注意:
- oracle.json和里面的根节点oracle名字必须一样
- jdbcUrl中,注意gid和库,如果是库,要用/,如果是gid,要用:,弄混了会报错
- connectionTestQuery一定要为空串,不然有可能出问题,oracle好像不支持这么测试
json
vim oracle.json
{
"oracle": {
"driverUrls": [
"/app/clickhouse/clickhouse-jdbc-bridge/drivers/ojdbc8-12.2.0.1.jar"
],
"driverClassName": "oracle.jdbc.driver.OracleDriver",
"jdbcUrl": "jdbc:oracle:thin:@10.135.0.70:1521/ods",
"username": "账号",
"password": "密码",
"connectionTestQuery": ""
}
}
nohup java -jar clickhouse-jdbc-bridge-2.1.0-shaded.jar &
tail -f nohup.out
ck的配置
到/etc/clickhouse-server目录下的config.xml文件,找到以下代码,移除注释,并修改host为执行clickhouse-jdbc-bridge-2.10.0-shaded.jar的ip地址:
xml
<jdbc_bridge>
<host>localhost</host>
<port>9019</port>
</jdbc_bridge>
使用
启动
nohup java -jar clickhouse-jdbc-bridge-2.1.0-shaded.jar &
tail -f nohup.out
重启ck
systemctl restart clickhouse-server
systemctl restart clickhouse-server2
验证
sql
select * from jdbc('','show datasource') --查看外部数据源
select * from jdbc('oracle','SELECT (TRUNC (SYSDATE+1) - SYSDATE) * 24 * 60 * 60 num_of_sec_left FROM DUAL') --运行一个测试sql