ClickHouse JDBC 介绍及其使用

ClickHouse是一个多功能、高性能、分布式的列式数据库,用于在线分析处理系统和数据仓库。ClickHouse JDBC是一个支持Java的类型4 JDBC驱动,可以让Java程序通过JDBC协议来访问ClickHouse,促进Java Web应用程序与ClickHouse的交互。

一、ClickHouse JDBC 简介

Java Database Connectivity (JDBC)是Java语言的一个API,提供了通过标准SQL或ODBC访问关系数据库的方法。JDBC驱动程序使用Java开发,它可以与ORM技术协同工作,使开发者能够轻松访问多种数据库管理系统。JDBC驱动分为四个类型 : JDBC-ODBC桥接驱动、本地API驱动、网络协议驱动和Java Native Libraries驱动。ClickHouse JDBC驱动是一个类型4 JDBC驱动,也就是纯Java驱动。

在使用ClickHouse JDBC之前,我们需要先引入它。建议直接从maven中央库引入。

二、ClickHouse JDBC 使用指南

1、建立连接

使用ClickHouse JDBC在Java中建立连接需要传递三个参数:URL、登录用户名和密码。其中,URL和登录用户名是必需的,但是密码是可选的。以下是一个建立连接的样例:

Class.forName("ru.yandex.clickhouse.ClickHouseDriver");
String url = "jdbc:clickhouse://localhost:8123/test";
String user = "default";
String password = "";
Connection conn = DriverManager.getConnection(url, user, password);

2、执行查询

对于SELECT查询语句,我们需要执行一个Query,然后通过结果集获取数据。以下是一个执行查询的样例:

String sql = "SELECT * FROM my_table";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()) {
    // 处理查询结果
}

对于INSERT、UPDATE或DELETE类型的语句,我们需要执行一个Update。以下是一个执行更新的样例:

String sql = "INSERT INTO my_table (col1, col2) VALUES (?, ?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "val1");
pstmt.setInt(2, 42);
int affectedRows = pstmt.executeUpdate();

3、终止连接

当我们完成使用ClickHouse JDBC连接时,需要终止连接。终止连接时,我们需要关闭结果集,然后关闭语句对象和连接对象。以下是一个终止连接的样例:

rs.close();
stmt.close();
conn.close();

三、ClickHouse JDBC 示例

1、创建表和插入数据

以下示例展示了如何使用ClickHouse JDBC创建表和插入数据:

Class.forName("ru.yandex.clickhouse.ClickHouseDriver");
String url = "jdbc:clickhouse://localhost:8123/test";
String user = "default";
String password = "";

Connection conn = DriverManager.getConnection(url, user, password);

// 创建表
Statement stmt = conn.createStatement();
stmt.execute("CREATE TABLE IF NOT EXISTS my_table (col1 String, col2 Int32)");
stmt.close();

// 插入数据
String sql = "INSERT INTO my_table (col1, col2) VALUES (?, ?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "val1");
pstmt.setInt(2, 42);
pstmt.executeUpdate();
pstmt.close();

conn.close();

2、查询数据

以下示例展示了如何使用ClickHouse JDBC查询数据:

Class.forName("ru.yandex.clickhouse.ClickHouseDriver");
String url = "jdbc:clickhouse://localhost:8123/test";
String user = "default";
String password = "";

Connection conn = DriverManager.getConnection(url, user, password);

// 查询数据
String sql = "SELECT col1, col2 FROM my_table";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()) {
    String col1 = rs.getString("col1");
    int col2 = rs.getInt("col2");
    // 处理查询结果
}

rs.close();
stmt.close();
conn.close();

3、使用批处理插入数据

以下示例展示了如何使用ClickHouse JDBC使用批处理插入数据:

Class.forName("ru.yandex.clickhouse.ClickHouseDriver");
String url = "jdbc:clickhouse://localhost:8123/test";
String user = "default";
String password = "";

Connection conn = DriverManager.getConnection(url, user, password);

// 创建表
Statement stmt = conn.createStatement();
stmt.execute("CREATE TABLE IF NOT EXISTS my_table (col1 String, col2 Int32)");
stmt.close();

// 批量插入数据
String sql = "INSERT INTO my_table (col1, col2) VALUES (?, ?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
for(int i=1; i<=1000; i++) {
    pstmt.setString(1, "val" + i);
    pstmt.setInt(2, i);
    pstmt.addBatch();
}
pstmt.executeBatch();
pstmt.clearBatch();
pstmt.close();

conn.close();

四、总结

ClickHouse JDBC是一个方便、高效的方式,可以让Java程序访问ClickHouse数据库。使用ClickHouse JDBC,我们可以轻松建立连接,执行查询和更新,以及插入数据。此外,ClickHouse JDBC提供了各种强大的功能,如批处理插入数据,可以大大提高程序的性能。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/257738.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-15 12:46
下一篇 2024-12-15 12:46

相关推荐

  • MySQL JDBC驱动包下载详解

    一、JDBC驱动介绍 JDBC是Java Database Connectivity的缩写,它是Java应用程序与各种数据库连接的标准API,允许Java程序员使用JDBC API…

    编程 2025-04-25
  • 详细阐述jdbc:mysql://localhost:3306

    一、连接MySQL数据库 连接MySQL数据库的方式有多种,其中使用JDBC连接是一种常用的方式。在JDBC连接中,我们需要使用mysql-connector-java包,并调用相…

    编程 2025-04-23
  • ClickHouse集群:从入门到精通

    ClickHouse是一个面向列存储的分布式数据库管理系统。它的设计目标是在大规模数据集下提供快速查询和数据插入功能。 一、概述 ClickHouse集群由多个节点组成,每个节点通…

    编程 2025-04-23
  • Springboot Clickhouse的使用详解

    一、概述 Springboot是一个快速开发的Java框架,而Clickhouse则是一个优秀的列式数据库管理系统。Springboot以其便捷、高效的特性,成为了众多开发者选择的…

    编程 2025-04-23
  • ClickHouse数据类型详解

    一、整型 1、Int类型 Int的长度可以是8、16、32、64比特。比特数代表了它能存储的整形数值范围。比如,Int8的范围是-128到127,Int16的范围是-32768到3…

    编程 2025-04-18
  • Spring Boot集成ClickHouse实践

    ClickHouse是俄罗斯Yandex公司开源的一款用于大规模数据分析的列式存储数据库,拥有极高的数据处理能力,支持高并发和高吞吐,在互联网金融、广告营销、物联网等领域得到广泛应…

    编程 2025-04-12
  • 详解Java ClickHouse

    一、概述 ClickHouse是一个用于多维分析的列式数据库管理系统。它只支持插入和查询操作,但能够在PB级数据量下高效运行。 ClickHouse最大的优势在于其高效处理分析型计…

    编程 2025-04-12
  • ShardingSphere-JDBC

    一、ShardingSphere-JDBC简介 ShardingSphere-JDBC是Apache ShardingSphere的其中一个分布式数据库中间件产品,它提供了Java…

    编程 2025-04-12
  • ClickHouse 启动详解

    一、下载与安装ClickHouse 1、在官方网站https://clickhouse.tech/docs/en/getting-started/install/#packaged…

    编程 2025-02-15
  • JDBC Jar包下载

    JDBC(Java Database Connectivity)是Java语言操作数据库的标准API,使得Java程序员可以和各种各样的关系型数据库进行通信。JDBC与特定数据库的…

    编程 2025-01-27

发表回复

登录后才能评论