clickhouse远程访问Oracle 11g数据库(clickhouse-jdbc-bridge)

1、简介

clickhouse-jdbc-bridge:是clickhouse提供的一个jdbc组件,用于通过JDBC的方式远程访问其他数据库表。

2、安装

(1)下载源文件并打包获取clickhouse-jdbc-bridge-2.0.7-shaded.jar

在官网:https://github.com/ClickHouse/clickhouse-jdbc-bridge,下载源码程序到本地,通过在idea或者eclipse中执行mvn的clean、packge完成打包后,到打包目录里面找到clickhouse-jdbc-bridge-2.0.7-shaded.jar
(2)将clickhouse-jdbc-bridge-2.0.7-shaded.jar放在Linux服务器的目录/data/clickhouse-jdbc-bridge下,并在该文件同级目录下新建两个目录:

config/datasources    --存放数据源配置文件
drivers               --jdbc驱动存放目录

(3)以连接JDBC访问Oracle 11g为例:
        ①在官网https://mvnrepository.com下载Oracle对应的驱动包ojdbc8-12.2.0.1.jar放置到/data/clickhouse-jdbc-bridge/drivers目录下。

        ②设置clickhouse-jdbc-bridge远程的数据库信息
mkdir -p config/datasources  #创建config目录及其子目录
在datasources目录下创建数据源配置文件,msjdbc.json文件名尽量与配置中的datasource名一致,如下配置:

{
  "msjdbc": {
      "driverUrls": [
          "/data/clickhouse-jdbc-bridge/drivers/ojdbc8-12.2.0.1.jar"
       ],
      "driverClassName": "oracle.jdbc.driver.OracleDriver",
      "jdbcUrl": "jdbc:oracle:thin:@远程连接的数据库ip:端口:服务名",
      "username": "账号",
      "password": "密码",
      "connectionTestQuery": ""
   }
}

当前Linux服务器的目录为:

 |--data
    |--clickhouse-jdbc-bridge
        |--clickhouse-jdbc-bridge-2.0.7-shaded.jar
        |--noput.out
        |--drivers
            |--ojdbc8-12.2.0.1.jar
        |--config
            |-- datasources
                |-- msjdbc.json

        ③运行clickhouse-jdbc-bridge

nohup java -jar clickhouse-jdbc-bridge-2.0.7-shaded.jar &
tail -f nohup.out

成功启动:

        ④在clickhouse部署的那台服务器中

到/etc/clickhouse-server目录下的config.xml文件,找到以下代码,移除注释,并修改host为执行clickhouse-jdbc-bridge-2.0.7-shaded.jar的ip地址:

<jdbc_bridge>
   <host>XX.XX.XX.XX</host>
   <port>9019</port>
</jdbc_bridge>

保存之后,重启clickhoust服务

systemctl restart clickhouse-server

3、访问

(1)查看能成功访问的的链接:select * from jdbc('','show datasource')


(2)远程查询oracle的某个表

select from jdbc('msjdbc', 'select * from test_tb')

(3)直接远程连接

select from jdbc('jdbc:oracle:thin:账号/密码@xx.xx.xx.xx:端口/服务名', 'select * from test_tb')

4、报错情况收集

(1)访问时候报错:clickhouse-jdbc-bridge is not running

如果碰到这个错误,先看bidge是否启动,如果启动看clickhouse-jdbc-bridge相关的nohup.out日志是否有问题。

 (2)远程读取oracle数据并插入到clickhouse数据库中

解决方法:

 查询数据库单个插入块中的最大分区数:

select name, value  from system.settings  where name='max_partitions_per_insert_block'

max_partitions_per_insert_block指限制单个插入块中的最大分区数。默认值:100,填0表示不限制。一旦单个SQL插入的数据分区块数大于max_partitions_per_insert_block,就会报错 Too many partitions for single INSERT block。

需要增大分组,修改clickhouse-server的users.xml文件:

 

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值