网站首页 > 精选教程 正文
最近根据一个项目需要导出大量数据,数据量大概在百万级别
数据是存在clickhouse中,最开始尝试使用excel导出百万级数据,导出速度很慢,于是调整为使用csv格式,速度较excel的速度快,但是导出速度也不是特别理想。于是使用Java调用clickhouse-client进行导出,导出速度很快,几秒钟就导出。
调用clickhouse-client的方式,实际上就是Java调用Linux命令,Java调用Linux命令的通用方法如下:
private static String getObject(String cmd) throws IOException {
log.info("执行的命令为:" + cmd);
String[] cmdA = {"/bin/sh","-c", cmd);
Process process = Runtime.getRunTime().exec(cmdA);
LineNumberReader br = new LineNumberReader(
new InputStreamReader(process.getInputStream()));
StringBuilder buffer = new StringBuilder();
String line;
while((line == br.readLine()) != null) {
System.out.println(line);
buffer.append(line).append("\n");
}
log.info("命令执行结果:" + buffer);
return buffer.toString();
}
只需要在通用的Java调用Linux命令的方法上再封装一层,加上调用clickhouse-client即可
public static String exportClickhouseCsvCmd
(String username, String password, String sql, String filepath) {
组装clickhouse-client的sql导出命令
return getObject(command);
}
然后就可以在业务方法中调用该导出方法了。
这种方法调试会相对麻烦,每次需要更新到服务器上去进行测试,但是性能是最好的,大家可以根据自己项目的实际情况进行合理的取舍。
猜你喜欢
- 2025-03-24 Java 转 Go 秘诀大放送!(java转换)
- 2025-03-24 优雅地实现EasyPoi动态导出列的两种方式
- 2025-03-24 Eclipse导出Jar包(包含外部包)(eclipse导出apk包方法)
- 2025-03-24 教你用MySQL导出一个ER图功能(如何导出mysql的所有表和数据)
- 2025-03-24 Java批量导入时,如何去除重复数据并返回结果?
- 2025-03-24 Chrome浏览器如何导出所有书签并导入书签
- 2025-03-24 java如何生成动态Word文件(java动态生成excel)
- 2025-03-24 JAVA POI实现大数据量excel文件读写及导出
- 2025-03-24 Java使用输出流OutputStream导出Excel遇到的问题及解决方法
- 2025-03-24 java使用JNA方式调用c++导出dll(java 调用c++ dll)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)