无法通过 clickhouse jdbc 切换数据库

问题描述

我想在 clickhouse jdbc 中切换数据库,但失败并出现以下错误。 clickhouse jdbc 不支持切换数据库吗?

USE DATABASE test_db
ClickHouse exception,code: 62,host: 192.168.0.4,port: 8123; Code: 62,e.displayText() = DB::Exception: Syntax error: Failed at position 5 ('DATABASE'): DATABASE test_db. Expected identifier (version 20.8.12.2)

解决方法

查看 USE 语句信息。

USE test_db

这不适用于 HTTP - 请参阅文档:

使用HTTP协议时无法进行此查询,因为有 没有会话的概念。

使用 HTTP 时按照这种方式定义 default database

echo 'SELECT number FROM numbers LIMIT 10' /
  | curl 'http://localhost:8123/?database=system' --data-binary @-

看起来需要在clickhouse-jdbc-driver的连接字符串中定义数据库:

jdbc:clickhouse://<host>:<port>[/<database>]
,

您可以使用 setCatalog 方法更改 JDBC 中的当前数据库

https://github.com/ClickHouse/clickhouse-jdbc/blob/master/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/ClickHouseConnectionImpl.java#L267