天天看点

ClickHouse JDBC Bridge 的安装及连接sqlserver

用于ClickHouse的JDBC链接桥。 它充当无状态代理,将查询从ClickHouse传递到外部数据源。 使用此扩展,您可以跨多个数据源实时在ClickHouse上运行分布式查询,从而以某种方式简化了用于数据仓库,监视和完整性检查等的数据管道的构建过程。

ClickHouse JDBC Bridge 的安装及连接sqlserver

Debain/ubuntu下安装方法如下:

其它类型的linux安装方法见官方github:https://codechina.csdn.net/mirrors/ClickHouse/clickhouse-jdbc-bridge

apt update && apt install -y procps wget
wget https://github.com/ClickHouse/clickhouse-jdbc-bridge/releases/download/v2.0.1/clickhouse-jdbc-bridge_2.0.1-1_all.deb
apt install --no-install-recommends -f ./clickhouse-jdbc-bridge_2.0.1-1_all.deb
//启动服务
clickhouse-jdbc-bridge
           

 ClickHouse JDBC Bridge安装完成之后,即可使用它连接其他的数据库,如MySQL,SQL server等

以SQL server举例:

  • 在/etc/clickhouse-jdbc-bridge目录下新建drivers文件夹,将SQL server驱动jar包放入其中

        如果找不到jar包的,可以点https://download.csdn.net/download/qq_38830964/16691377下载

在/etc/clickhouse-jdbc-bridge/config/datasource目录下,编辑datasource.json.example文件(这一步好像可有可无,如果你是clickhouse-jdbc-bridge-2.0以上,好像不需要,直接启动服务即可)

配置参考如下
{
  "$schema": "../datasource.jschema",
  "ch-server": {
    "aliases": [
      "self"
    ],
    "driverUrls": [
      "https://repo1.maven.org/maven2/ru/yandex/clickhouse/clickhouse-jdbc/0.2.5/clickhouse-jdbc-0.2.5-shaded.jar"
    ],
    "driverClassName": "ru.yandex.clickhouse.ClickHouseDriver",
    "jdbcUrl": "jdbc:clickhouse://ch-server:8123/system?compress=false",
    "username": "default",
    "password": "",
    "maximumPoolSize": 5
  },
  "msjdbc": {
      "driverUrls": [
        "../../drivers/mssql-jdbc-9.2.1.jre8.jar"
      ],
      "driverClassName": "com.microsoft.sqlserver.jdbc.SQLServerDriver",
      "jdbcUrl": "jdbc:sqlserver://localhost:1433;DatabaseName=data",
      "username": "sa",
      "password": "root"
    }
}
           
  • 如果在连接过程中,出现连接错误的情况,请打开sqlserver配置管理器,查看
  • 开启sqlserver的tcp/ip连接

    在sqlserver mangement网络服务中,开启tcp/ip的端口,主要是IP0,IP1,ipall

使用jdbc表引擎创建clickhouse数据表

使用clickhouse-jdbc-bridge ,jdbc表引擎连接sqlserver('DSN', database or schema, table)
CREATE TABLE jdbc
(
    lx String,
    number Int64,
    kcsl Int64,
    kcjes Int64,
    djsj DateTime(2)
)
ENGINE = JDBC('jdbc:sqlserver://localhost:1433;DatabaseName=data;user=sa;password=root', '', 'test')