SpringBoot配置Clickhouse
一、加入clickhouse jar包依赖
<dependency> <groupId>ru.yandex.clickhouse</groupId> <artifactId>clickhouse-jdbc</artifactId> <version>0.1.53</version> </dependency>
二、配置Clickhouse数据库连接属性配置文件,clickhouse默认没有密码
spring: datasource: clickhouse: address: jdbc:clickhouse://127.0.0.1:8123 username: default password: db: system socketTimeout: 600000
三、编写Clickhouse数据库连接操作工具类
import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import ru.yandex.clickhouse.ClickHouseConnection; import ru.yandex.clickhouse.ClickHouseDataSource; import ru.yandex.clickhouse.settings.ClickHouseProperties; import java.sql.*; import java.util.*; @Slf4j @Component public class ClickHouseConfig { private static String clickhouseAddress; private static String clickhouseUsername; private static String clickhousePassword; private static String clickhouseDB; private static Integer clickhouseSocketTimeout; @Value("${spring.datasource.clickhouse.address}") public void setClickhouseAddress(String address) { ClickHouseConfig.clickhouseAddress = address; } @Value("${spring.datasource.clickhouse.username}") public void setClickhouseUsername(String username) { ClickHouseConfig.clickhouseUsername = username; } @Value("${spring.datasource.clickhouse.password}") public void setClickhousePassword(String password) { ClickHouseConfig.clickhousePassword = password; } @Value("${spring.datasource.clickhouse.db}") public void setClickhouseDB(String db) { ClickHouseConfig.clickhouseDB = db; } @Value("${spring.datasource.clickhouse.socketTimeout}") public void setClickhouseSocketTimeout(Integer socketTimeout) { ClickHouseConfig.clickhouseSocketTimeout = socketTimeout; } public static Connection getConn() { ClickHouseConnection conn = null; ClickHouseProperties properties = new ClickHouseProperties(); properties.setUser(clickhouseUsername); properties.setPassword(clickhousePassword); properties.setDatabase(clickhouseDB); properties.setSocketTimeout(clickhouseSocketTimeout); ClickHouseDataSource clickHouseDataSource = new ClickHouseDataSource(clickhouseAddress,properties); try { conn = clickHouseDataSource.getConnection(); return conn; } catch (SQLException e) { e.printStackTrace(); } return null; } public static List<Map<String,String>> exeSql(String sql){ log.info("cliockhouse 执行sql:" + sql); Connection connection = getConn(); try { Statement statement = connection.createStatement(); ResultSet results = statement.executeQuery(sql); ResultSetMetaData rsmd = results.getMetaData(); List<Map<String,String>> list = new ArrayList<>(); while(results.next()){ Map<String,String> row = new HashMap<>(); for(int i = 1;i<=rsmd.getColumnCount();i++){ row.put(rsmd.getColumnName(i),results.getString(rsmd.getColumnName(i))); } list.add(row); } return list; } catch (SQLException e) { e.printStackTrace(); } return null; } }
四、是用测试方法执行sql查询数据
import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import java.util.List; import java.util.Map; @RunWith(SpringRunner.class) @SpringBootTest @Slf4j public class ClickHouseConfigTest { @Test public void exeSql() { log.info("===========测试开始============"); String sql="select cluster,shard_num from clusters"; List<Map<String,String>> result= ClickHouseConfig.exeSql(sql); log.info("===========查询技术============"); log.info("clickhouse查询结果为:{}",result); } }
测试成功
转自:点击领取 https://www.dianjilingqu.com/
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!