网站首页 > java教程 正文
最近根据一个项目需要导出大量数据,数据量大概在百万级别
数据是存在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);
}
然后就可以在业务方法中调用该导出方法了。
这种方法调试会相对麻烦,每次需要更新到服务器上去进行测试,但是性能是最好的,大家可以根据自己项目的实际情况进行合理的取舍。
猜你喜欢
- 2024-11-24 给R语言读取Excel表的能力
- 2024-11-24 jmeter 不务正业,干起了可变接口、动态参数自动化测试
- 2024-11-24 java开发工具IntelliJ IDEA全新版本V2022.2正式发布(二)
- 2024-11-24 把JSON/CSV文件打造成MySQL数据库
- 2024-11-24 (Python基础教程之四)Python中的变量的使用
- 2024-11-24 应大家需要,Java常用开发工具汇总来了
- 2024-11-24 MySQL实战 | MySQL逻辑架构—一条查询SQL是如何执行的
- 2024-11-24 Oracle查询语句,你知道几个?(下)
- 2024-11-24 (Python基础教程之十九)Python优先级队列示例
- 2024-11-24 读 CSV/TXT 的报表怎么做分页查询?
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)