使用jdbc操作ClickHouse
使用jdbc操作ClickHouse
- 创建maven项目引入依赖
引入ClickHouse驱动包
- <dependency>
- <groupId>ru.yandex.clickhouse</groupId>
- <artifactId>clickhouse-jdbc</artifactId>
- <version>0.1.40</version>
- </dependency>
- 修改ClickHouse配置文件
vim /etc/clickhouse-server/config.xml
配置jdbc访问端口
<http_port>8123</http_port>
配置ip地址
- <listen_host>::1</listen_host>
- <listen_host>172.16.1.23</listen_host>
注:需要配置listen_host,不然会出现 Connection refused的情况,修改完成之后需要重启
- 编写测试类
- package com.zhangwq;
- import java.sql.*;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- /**
- * @author zhangwq
- * @date 2018/6/30 20:58
- */
- public class ClickHouseJDBC {
- public static void main(String[] args) {
- String sqlDB = "show databases";//查询数据库
- String sqlTab = "show tables";//查看表
- String sqlCount = "select count(*) count from ontime";//查询ontime数据量
- exeSql(sqlDB);
- exeSql(sqlTab);
- exeSql(sqlCount);
- }
- public static void exeSql(String sql){
- String address = "jdbc:clickhouse://172.16.1.23:8123/default";
- Connection connection = null;
- Statement statement = null;
- ResultSet results = null;
- try {
- Class.forName("ru.yandex.clickhouse.ClickHouseDriver");
- connection = DriverManager.getConnection(address);
- statement = connection.createStatement();
- long begin = System.currentTimeMillis();
- results = statement.executeQuery(sql);
- long end = System.currentTimeMillis();
- System.out.println("执行("+sql+")耗时:"+(end-begin)+"ms");
- ResultSetMetaData rsmd = results.getMetaData();
- List<Map> list = new ArrayList();
- while(results.next()){
- Map map = new HashMap();
- for(int i = 1;i<=rsmd.getColumnCount();i++){
- map.put(rsmd.getColumnName(i),results.getString(rsmd.getColumnName(i)));
- }
- list.add(map);
- }
- for(Map map : list){
- System.err.println(map);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }finally {//关闭连接
- try {
- if(results!=null){
- results.close();
- }
- if(statement!=null){
- statement.close();
- }
- if(connection!=null){
- connection.close();
- }
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
- }
启动项目测试,发现如下报错。
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
pom引入slf4j相关文件引入依赖,并resource下添加log4j2.properties解决该问题
- <dependency>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-slf4j-impl</artifactId>
- <version>2.11.0</version>
- </dependency>
- 查看输出结果
- {name=default}
- {name=system}
- 执行(show databases)耗时:2ms
- {name=ontime}
- 执行(show tables)耗时:2ms
- {name=zwqtest}
- {name=zwqtestall}
- 执行(select count(*) count from ontime)耗时:98ms
- {count=177920306}
使用jdbc操作ClickHouse的更多相关文章
- Java的JDBC操作
Java的JDBC操作 [TOC] 1.JDBC入门 1.1.什么是JDBC JDBC从物理结构上来说就是java语言访问数据库的一套接口集合,本质上是java语言根数据库之间的协议.JDBC提供一组 ...
- hibernate4中使用Session doWork()方法进行jdbc操作(代码)
Hibernate3.3.2版本中getSession().connection()已被弃用,hibernate4中官方推荐使用Session doWork()方法进行jdbc操作 首先看看Work接 ...
- jdbc mysql crud dao模型 sql注入漏洞 jdbc 操作大文件
day17总结 今日内容 l JDBC 1.1 上次课内容总结 SQL语句: 1.外键约束:foreign key * 维护多个表关系! * 用来保证数据完整性! 2.三种关系: * 一对多: * 一 ...
- JDBC操作MySQL数据库案例
JDBC操作MySQL数据库案例 import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepared ...
- JavaWeb用Jdbc操作MySql数据库(一)
一.添加开发包.在JavaWeb中用jdbc操作数据库,使用方法与java一样,但是在处理开发包的问题上有点差别.JavaWeb不能将mysql-connector-java-5.1.7-bin.ja ...
- Java使用Jdbc操作MySql数据库(一)
这个示例是Java操作MySql的基本方法. 在这个示例之前,要安装好MySql,并且配置好账户密码,创建一个logininfo数据库,在数据库中创建userinfo数据表.并且在表中添加示例数据. ...
- 使用JdbcTemplate简化JDBC操作 实现数据库操作
使用Spring JDBC框架方遍简单的完成JDBC操作,满足性能的需求且灵活性高. Spring JDBC框架由4个部分组成,即core.datasource.object.support. org ...
- 用于JDBC操作数据库的公共类
/* * @(#)CommonSql.java 2011-9-5 * * Copyright 2011 Bianjing,All rights reserved. */ import java.sql ...
- jdbc操作mysql
本文讲述2点: 一. jdbc 操作 MySQL .(封装一个JdbcUtils.java类,实现数据库表的增删改查) 1. 建立数据库连接 Class.forName(DRIVER); connec ...
随机推荐
- [CSP-S模拟测试]:数学课(找规律+数学)
题目传送门(内部题145) 输入格式 从$math.in$读入数据. 第一行两个数,为$n,q$.接下来$q$行每行一个数$m$,询问大小为$m$的$A$一共有多少个. 输出格式 输出答案到$math ...
- C++ this指针的理解
先要理解class的意思.class应该理解为一种类型,象 int,char一样,是用户自定义的类型.虽然比int char这样build-in类型复杂的多,但首先要理解它们一样是类型.用这个类型可以 ...
- ajax 下载文件
原本现在文件直接通过超链接可以完成下载,但现在要在url中附带几个参数,并且这些参数要是点击事件触发时的最新值,所以这里使用ajax的方式进行下载 然而: 1.使用ajax,ajax的返回值类型是js ...
- window 下要运行php,需要编辑php环境变量
参考:https://blog.csdn.net/zhezhebie/article/details/72765262
- ubuntu下如何高速下载?
答: 使用uget工具 1.安装uget sudo apt-get install uget -y 2.下载时在设置里指定最大连接数 笔者指定最大连接数为10,可以适当调整此值
- leetcode 207课程表
class Solution { public: bool canFinish(int numCourses, vector<vector<int>>& prerequ ...
- 解决SpringCloud使用Feign跨服调用时header请求头中的信息丢失
在使用SpringCloud进行Feign跨服调用时header请求头中的信息会丢失,是因为Feign是不会带上当前请求的Cookie信息和头信息的,这个时候就需要重写请求拦截. 1.需要重写Requ ...
- CentOS7性能监控系统安装
想打造 New Relic 那样漂亮的实时监控系统我们只需要 InfluxDB/collectd/Grafana 这三个工具,这三个工具的关系是这样的: 采集数据(collectd)-> 存储数 ...
- centos6.5 内核 :2.6.32 升级内核
问题: CentOS 6.5 的内核一般都是2.6,在2.6的内核下,Docker运行会比较卡,所以一般会选择升级到更高版本,本次教程升级版本为4.4.102 一.升级内核 1.查看内核版本 u ...
- linux卸载Python3
一.卸载Python3 1.卸载python3 rpm -qa|grep python3|xargs rpm -ev --allmatches --nodeps 卸载pyhton3 2.whereis ...