知者何南 发表于 2024-2-13 18:18:09

ClickHouse(17)ClickHouse集成JDBC表引擎详细解析

目录

[*]JDBC

[*]建表
[*]用法示例

[*]JDBC表函数
[*]资料分享
[*]参考文章

JDBC

允许CH通过JDBC连接到外部数据库。
要实现JDBC连接,CH需要使用以后台进程运行的程序 clickhouse-jdbc-bridge。
该引擎支持Nullable数据类型。
建表

CREATE TABLE table_name
(
    columns list...
)
ENGINE = JDBC(datasource_uri, external_database, external_table)引擎参数

[*]datasource_uri — 外部DBMS的URI或名字.
URI格式: jdbc:://:/?user=&password=.
MySQL示例: jdbc:mysql://localhost:3306/?user=root&password=root.
[*]external_database — 外部DBMS的数据库名.
[*]external_table — external_database中的外部表名或类似select * from table1 where column1=1的查询语句.
用法示例

通过mysql控制台客户端来创建表
Creating a table in MySQL server by connecting directly with it’s console client:
mysql> CREATE TABLE `test`.`test` (
    ->   `int_id` INT NOT NULL AUTO_INCREMENT,
    ->   `int_nullable` INT NULL DEFAULT NULL,
    ->   `float` FLOAT NOT NULL,
    ->   `float_nullable` FLOAT NULL DEFAULT NULL,
    ->   PRIMARY KEY (`int_id`));
Query OK, 0 rows affected (0,09 sec)

mysql> insert into test (`int_id`, `float`) VALUES (1,2);
Query OK, 1 row affected (0,00 sec)

mysql> select * from test;
+------+----------+-----+----------+
| int_id | int_nullable | float | float_nullable |
+------+----------+-----+----------+
|      1 |         NULL |   2 |         NULL |
+------+----------+-----+----------+
1 row in set (0,00 sec)在CH服务端创建表,并从中查询数据:
CREATE TABLE jdbc_table
(
    `int_id` Int32,
    `int_nullable` Nullable(Int32),
    `float` Float32,
    `float_nullable` Nullable(Float32)
)
ENGINE JDBC('jdbc:mysql://localhost:3306/?user=root&password=root', 'test', 'test')SELECT *
FROM jdbc_table┌─int_id─┬─int_nullable─┬─float─┬─float_nullable─┐
│      1 │         ᴺᵁᴸᴸ │   2 │         ᴺᵁᴸᴸ │
└────────┴──────────────┴───────┴────────────────┘INSERT INTO jdbc_table(`int_id`, `float`)
SELECT toInt32(number), toFloat32(number * 1.0)
FROM system.numbersJDBC表函数

clickhouse除了支持建表集成jdbc数据源之外,还支持通过表函数,也就是返回一个表的函数,来临时集成查询一张表的数据。它与建表集成一样,需要clickhouse-jdbc-bridge程序才能运行。它支持可空类型(基于查询的远程表的DDL)。
示例
SELECT * FROM jdbc('jdbc:mysql://localhost:3306/?user=root&password=root', 'schema', 'table')SELECT * FROM jdbc('mysql://localhost:3306/?user=root&password=root', 'select * from schema.table')SELECT * FROM jdbc('mysql-dev?p1=233', 'num Int32', 'select toInt32OrZero(''{{p1}}'') as num')SELECT *
FROM jdbc('mysql-dev?p1=233', 'num Int32', 'select toInt32OrZero(''{{p1}}'') as num')SELECT a.datasource AS server1, b.datasource AS server2, b.name AS db
FROM jdbc('mysql-dev?datasource_column', 'show databases') a
INNER JOIN jdbc('self?datasource_column', 'show databases') b ON a.Database = b.name资料分享

ClickHouse经典中文文档分享
参考文章


[*]ClickHouse(01)什么是ClickHouse,ClickHouse适用于什么场景
[*]ClickHouse(02)ClickHouse架构设计介绍概述与ClickHouse数据分片设计
[*]ClickHouse(03)ClickHouse怎么安装和部署
[*]ClickHouse(04)如何搭建ClickHouse集群
[*]ClickHouse(05)ClickHouse数据类型详解
[*]ClickHouse(06)ClickHouse建表语句DDL详细解析
[*]ClickHouse(07)ClickHouse数据库引擎解析
[*]ClickHouse(08)ClickHouse表引擎概况
[*]ClickHouse(09)ClickHouse合并树MergeTree家族表引擎之MergeTree详细解析
[*]ClickHouse(10)ClickHouse合并树MergeTree家族表引擎之ReplacingMergeTree详细解析
[*]ClickHouse(11)ClickHouse合并树MergeTree家族表引擎之SummingMergeTree详细解析
[*]ClickHouse(12)ClickHouse合并树MergeTree家族表引擎之AggregatingMergeTree详细解析
[*]ClickHouse(13)ClickHouse合并树MergeTree家族表引擎之CollapsingMergeTree详细解析
[*]ClickHouse(14)ClickHouse合并树MergeTree家族表引擎之VersionedCollapsingMergeTree详细解析
[*]ClickHouse(15)ClickHouse合并树MergeTree家族表引擎之GraphiteMergeTree详细解析
[*]ClickHouse(16)ClickHouse日志引擎Log详细解析

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: ClickHouse(17)ClickHouse集成JDBC表引擎详细解析