一、简述
MS工具连接mongDb比较简单,网上可以查到很多相关文章。但是你会发现MS连接CK数据库就没有那么简单了,网上也没有相关的文章可以找到。经过一个月的摸索,终于让我找到了两种解决方式。第一种:自己编写ck驱动包,步骤与连接mongDb一样。第二种:将下载的ck驱动包放到服务器安装路径相关的目录下。在这里主要说下第二种方式。
二、操作流程
我们公司是将MS工具通过镜像安装在linux服务器上,我们将ck驱动包放置在如下镜像文件目录下:
由于公司权限问题,无法直接将驱动包上传到镜像文件里,所以先将文件上传到linux服务器上再进行复制。data路径下的ck驱动包复制到以上所圈的docker镜像文件下,输入docker命令:
sudo docker cp clickhouse-jdbc-0.3.1.jar 00fe94c08217:/app/lib
00fe94c08217:表示需要放入的镜像ID
驱动包位置:
链接:https://pan.baidu.com/s/1P-qbvO9HyLtI6eiihoEm5Q
提取码:p1qq
三、代码实现
在MS工具自定义代码片段,用beanshell语言进行连接:(以下代码不一定最优,可自己编写)
import java.sql.*;
import java.util.*;
String url = "jdbc:clickhouse://ip:d端口号/";
String user = "user ";
String dbname = "库名";
String password = "password ";
String sql = "sql语句";
Connection Mycon = null;
Statement Mystmt = null;
ResultSet Myrset = null;
Mycon = DriverManager.getConnection(url+dbname, user, password);
Mystmt = Mycon.createStatement();
Myrset = Mystmt.executeQuery(sql);
int a = Myrset.getMetaData().getColumnCount();
log.info("列数:"+a);//获取列数
String[] result = 0;
while(Myrset.next()){
String selectresult_single ="";
for(int i=1;i<=a;i++){
String ColumnName = Myrset.getMetaData().getColumnName(i); //获取表头
String ColumnValue = Myrset.getString(i);
//selectresult_single = selectresult_single + ColumnName + "=" + ColumnValue + " "; //将表头也一起输出来
selectresult_single = selectresult_single + ColumnValue + " "; //仅输出表数据
}
//log.info("第"+Myrset.getRow()+"行:"+selectresult_single); //输出string类型
result = selectresult_single.split(" ");
log.info("第"+Myrset.getRow()+"行:"+Arrays.toString(result)); //输出数组类型
}
Myrset.close();
Mystmt.close();
Mycon.close();