• 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地址:


       XX.XX.XX.XX
       9019

    保存之后,重启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文件:

     

  • 相关阅读:
    一文浅谈SDN
    SQL server2019 Express安装
    小步快跑,敏捷开发的精髓!
    最新基于Citespace、vosviewer、R语言的文献计量学可视化分析技术及全流程文献可视化SCI论文高效写作方法
    机器学习西瓜书+南瓜书吃瓜教程学习笔记第六章支持向量机
    蓝桥杯刷题_day10
    数学建模笔记(二)论文写作:论文结构
    hadoop入门(九):日志聚集功能配置
    清华大牛终于把「图解计算机网络、操作系统」学习笔记总结出来了
    模拟电子技术一|发展史
  • 原文地址:https://blog.csdn.net/qq_39512532/article/details/128110703