CkickHouse JDBC 使用整理

1. pom 引入

        <dependency><groupId>com.clickhouse</groupId><artifactId>clickhouse-jdbc</artifactId><version>0.4.6</version></dependency><dependency><groupId>org.roaringbitmap</groupId><artifactId>RoaringBitmap</artifactId><version>0.9.31</version></dependency>
RoaringBitmap 个人觉得比较好用,可以不用引入。

2. JDBC 配置

    /*** 在高版本中 ClickHouseProperties 类已去掉,直接使用Properties。* url 格式:jdbc:clickhouse://host1:port,host2:port.../db* 集群模式也不再使用 BalancedClickhouseDataSource * @return* @throws SQLException*/public ClickHouseConnection getConnection() throws SQLException {Properties pro = new Properties();pro.setProperty("socket_timeout", 60000);//pro.setProperty(ClickHouseClientOption.SOCKET_TIMEOUT.getKey(),60000);ClickHouseDataSource clickHouseDataSource = new ClickHouseDataSource(url,pro);return clickHouseDataSource.getConnection(username,password);}/*** 和 ClickHouseDataSource 创建连接底层一致都是用 ClickHouseJdbcUrlParser.parse(url, properties)* @return* @throws SQLException*/public Connection getConnectionByJDBC() throws SQLException {//DriverManager.getConnection(url, pro );return DriverManager.getConnection(url, username, password);}

源码中有注明 jdbcurl 格式,集群模式,多个节点直接用","隔开

客户端参数设置,源码中ClickHouseClientOption 类中设置了参数的默认值,可以查看该类,依据自己需要通过Properties进行修改。

还有非客户端参数,可以通过 ClickHouseHttpOption 里面的参数设置,如:设置custom_http_headers 相关参数

pro.set(ClickHouseHttpOption.CUSTOM_HEADERS.getKey(),"xxx")

可以参考官方 github 升级说明:clickhouse-java/clickhouse-jdbc at v0.4.6 · ClickHouse/clickhouse-java · GitHub

3. 查询

    /*** 执行查询,返回ResultSet* @param sql* @return* @throws SQLException*/public static ResultSet executeQuery(String sql) throws SQLException {return getConnection().createStatement().executeQuery(sql);}/*** 获取bitmap, sql 只返回一个字段 字段结构为bitmap* @param sql* @return* @throws SQLException*/public static ClickHouseBitmap getBitmap(String sql) throws SQLException {ResultSet resultSet = executeQuery(sql);if (resultSet.next()){return resultSet.getObject(1,ClickHouseBitmap.class);}else {return ClickHouseBitmap.empty();}}/*** 将结果转为 RoaringBitmap,比 ClickHouseRoaringBitmap 好用一些* @param sql* @return* @throws SQLException*/public static RoaringBitmap getRoaringBitmap(String sql) throws SQLException {ClickHouseBitmap clickHouseBitmap = getBitmap(sql);return (RoaringBitmap) clickHouseBitmap.unwrap();}

ResultSet 必须调用 next() 方法。查看源码currentRow 初始为null,直接取ResultSet 取不到。

获取ResultSet 中的多个字段

        ResultSet resultSet = ClickhouseService.executeQuery(sql);while (resultSet.next()){ResultSetMetaData rsmd = resultSet.getMetaData();String column1= resultSet.getString(rsmd.getColumnName(1));String column2= resultSet.getString(rsmd.getColumnName(2));String column3= resultSet.getString(rsmd.getColumnName(3));}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/670039.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

星戈瑞CY7-COOH荧光探针,助力生物医学研究

CY7-COOH是一种近红外荧光染料&#xff0c;具有优异的光稳定性、高量子产率和强烈的荧光信号。此外&#xff0c;CY7-COOH还具有较长的激发和发射波长&#xff0c;使其在生物医学成像中具有较高的穿透力和较低的背景干扰。这使得CY7-COOH荧光探针在生物医学研究中具有诸多应用前…

YOLOv5网络结构解析

YOLOv5的实现细节解析&#xff1a;基础组件与实现细节 YOLO&#xff08;You Only Look Once&#xff09;系列作为目标检测领域的重要算法&#xff0c;以其速度快、性能好而著称。YOLOv5是该系列的最新版本&#xff0c;它在保持YOLO一贯的简洁高效特点的同时&#xff0c;进一步…

武汉星起航:跨境电商领域国际竞争力卓越,引领行业再上新台阶

在全球化浪潮的推动下&#xff0c;跨境电商行业日益成为各国经济交流与合作的重要桥梁。武汉星起航电子商务有限公司&#xff0c;作为跨境电商领域的佼佼者&#xff0c;凭借其深厚的行业经验和前瞻性的战略视野&#xff0c;在国际市场上展现出强大的竞争力&#xff0c;为行业的…

pyqt 分组框控件QGroupBox

pyqt 分组框控件QGroupBox 分组框控件QGroupBox介绍效果代码 分组框控件QGroupBox介绍 QGroupBox提供了一个框架&#xff0c;用于将其他控件&#xff08;如按钮、滑块、标签等&#xff09;组合在一起。 QGroupBox 通常包含一个标题栏和一个内容区域。标题栏显示文本标签&#…

Pyserini

文章目录 关于 Pyserini安装&#x1f3ac;如何搜索&#xff1f;&#x1f64b;如何给我的语料集建立索引 关于 Pyserini github : https://github.com/castorini/pyseriniPyserini: An Easy-to-Use Python Toolkit to Support Replicable IR Research with Sparse and Dense Re…

热敏电阻符号与常见术语详细解析

热敏电阻是一种电阻器&#xff0c;其特点是电阻值随温度的变化而显著变化&#xff0c;这使得它们成为非常有用的温度传感器。它们可以由单晶、多晶或玻璃、塑料等半导体材料制成&#xff0c;并分为两大类&#xff1a;正温度系数热敏电阻&#xff08;#PTC热敏电阻#&#xff09;和…

OpenHarmony实战开发-请求动画绘制帧率

在应用开发中&#xff0c;属性动画和显式动画能够使用可选参数ExpectedFrameRateRange&#xff0c;为不同的动画配置不同的期望绘制帧率。 请求属性动画的绘制帧率 定义文本组件的属性动画&#xff0c;请求绘制帧率为60&#xff0c;范例如下&#xff1a; Text().animation({d…

Hass哈斯数控数据采集网络IP配置设置

机床数据采集&#xff08;MDC&#xff09;允许你使用Q和E命令通过网络接口或选项无线网络从控制系统提取数据。设置143支持该功能&#xff0c;并且指定控制器使用这个数据端口。MDC是一个需要一台附加计算机发送请求&#xff0c;解释说明和存储机床数据的软件功能。这个远程计算…

SparkStructuredStreaming状态编程

spark官网关于spark有状态编程介绍比较少&#xff0c;本文是一篇个人理解关于spark状态编程。 官网关于状态编程代码例子: spark/examples/src/main/scala/org/apache/spark/examples/sql/streaming/StructuredComplexSessionization.scala at v3.5.0 apache/spark (github…

武王伐纣时杀死一位商朝大将,八百年后其子孙复仇推翻周朝

大约在公元前1046年&#xff0c;周武王率领大军征讨商朝&#xff0c;并在牧野之战中击溃商军&#xff0c;纣王兵败后自焚而死&#xff0c;至此商朝灭亡&#xff0c;史称“武王伐纣”。周武王进入朝歌城后&#xff0c;对商朝的旧臣进行了相关处理&#xff0c;有人“升职”了&…

88、动态规划-乘积最大子数组

思路&#xff1a; 首先使用递归来解&#xff0c;从0开始到N&#xff0c;每次都从index开始到N的求出最大值。然后再次递归index1到N的最大值&#xff0c;再求max。代码如下&#xff1a; // 方法一&#xff1a;使用递归方式找出最大乘积public static int maxProduct(int[] num…

申请Sectigo证书流程详解

Sectigo&#xff08;前身为Comodo CA&#xff09;&#xff0c;是目前主流SSL证书的一种&#xff0c;目前全球范围内应用度也非常广泛&#xff0c;是目前众多品牌中市场份额最大的一个品牌了&#xff0c;在全球证书市场份额占比约为40%。 其超高的市场份额占比主要还是基于其超…