使用 JDBC 将 ClickHouse 连接到外部数据源
使用 JDBC 需要 ClickHouse JDBC 桥接,因此您需要在本地机器上使用 clickhouse-local
从您的数据库将数据流式传输到 ClickHouse Cloud。请访问文档中 Migrate 部分的 使用 clickhouse-local 页面以获取详细信息。
概述: ClickHouse JDBC Bridge 结合 jdbc 表函数 或 JDBC 表引擎 可以让 ClickHouse 访问任何可用 JDBC 驱动程序 的外部数据源:

这对于没有适用于该外部数据源的原生内置 集成引擎、表函数或外部字典的情况非常有用,但该数据源存在 JDBC 驱动程序。
您可以使用 ClickHouse JDBC Bridge 进行读写操作。同时,可以并行连接多个外部数据源,例如,可以在 ClickHouse 中对多个外部和内部数据源进行分布式查询,实时访问。
在本节中,我们将向您展示如何轻松安装、配置和运行 ClickHouse JDBC Bridge,以便将 ClickHouse 连接到外部数据源。我们将使用 MySQL 作为本节的外部数据源。
让我们开始吧!
本地安装 ClickHouse JDBC Bridge
使用 ClickHouse JDBC Bridge 最简单的方法是在 ClickHouse 正在运行的同一主机上安装和运行它:
让我们首先连接到 ClickHouse 运行所在机器的 Unix shell,并创建一个本地文件夹,用于稍后安装 ClickHouse JDBC Bridge(可以根据需要命名文件夹并放置在任何位置):
现在,我们将下载 当前版本 的 ClickHouse JDBC Bridge 到该文件夹中:
为了能够连接到 MySQL,我们将创建一个命名数据源:
您现在可以将以下配置复制并粘贴到文件 ~/clickhouse-jdbc-bridge/config/datasources/mysql8.json
中:
在上述配置文件中
- 您可以为数据源使用任何名称,我们使用了
mysql8
- 在
jdbcUrl
的值中,您需要根据正在运行的 MySQL 实例用适当的值替换<host>
和<port>
,例如:"jdbc:mysql://localhost:3306"
- 您需要用您的 MySQL 凭据替换
<username>
和<password>
,如果您不使用密码,可以删除配置文件中"password": "<password>"
行 - 在
driverUrls
的值中,我们仅指定了一个可以下载 当前版本 MySQL JDBC 驱动程序的 URL。这就是我们需要做的,ClickHouse JDBC Bridge 将自动下载该 JDBC 驱动程序(到操作系统特定的目录中)。
现在我们准备启动 ClickHouse JDBC Bridge:
我们在前台模式下启动了 ClickHouse JDBC Bridge。为了停止该桥,您可以将上面的 Unix shell 窗口恢复到前台并按 CTRL+C
。
从 ClickHouse 内部使用 JDBC 连接
ClickHouse 现在可以通过使用 jdbc 表函数 或 JDBC 表引擎 访问 MySQL 数据。
执行以下示例的最简单方法是复制并粘贴到 clickhouse-client
或 Play UI 中。
- jdbc 表函数:
作为 jdbc 表函数的第一个参数,我们使用上述配置中命名的数据源的名称。
- JDBC 表引擎:
作为 jdbc 引擎子句的第一个参数,我们使用上述配置中命名的数据源的名称。
ClickHouse JDBC 引擎表的架构和连接的 MySQL 表的架构必须一致,例如,列名和顺序必须相同,列数据类型必须兼容。
外部安装 ClickHouse JDBC Bridge
对于分布式 ClickHouse 集群(拥有多个 ClickHouse 主机的集群),将 ClickHouse JDBC Bridge 外部安装并在其独立主机上运行是有意义的:

这有一个优点,即每个 ClickHouse 主机都可以访问 JDBC Bridge。否则,JDBC Bridge 将需要在每个应通过该桥访问外部数据源的 ClickHouse 实例上本地安装。
为了外部安装 ClickHouse JDBC Bridge,我们需要执行以下步骤:
-
我们在专用主机上安装、配置并运行 ClickHouse JDBC Bridge,按照本指南第一部分中描述的步骤进行操作。
-
在每个 ClickHouse 主机上,我们将以下配置块添加到 ClickHouse 服务器配置(根据您选择的配置格式,使用 XML 或 YAML 版本之一):
- XML
- YAML
- 您需要将
JDBC-Bridge-Host
替换为专用 ClickHouse JDBC Bridge 主机的主机名或 IP 地址 - 我们指定了默认的 ClickHouse JDBC Bridge 端口
9019
,如果您为 JDBC Bridge 使用了其他端口,则必须相应地调整上述配置