网站首页 > java教程 正文
很容易想到的办法是把文本数据灌到 RDB 里,利用数据库分页机制来做,但这样做会对数据库产生很大影响(容量和性能),毕竟要分页查询的数据量不会太小。而且如果 CSV/TXT 数据就是从数据库导出去的,那这种方式基本就行不通了。
用 JAVA 硬写也是一种办法,就是比较麻烦,除了要能完成过滤、分组等集合运算,还要考虑异步查询的效率,如果通过行号(要遍历数据)确定每页的查询范围,效率就非常低了;通过字节数来确定每页要读的数据会快很多,但要保证每次读取的数据是整条的,如果读出的最后一条数据被截断,要有“补尾”机制,下一页再读的时候又要“去头”,要考虑的问题比较多。
直接用支持文本分页查询的报表工具会比较简单,比如这里介绍的实现过程: http://c.raqsoft.com.cn/article/1570700820741 ,用两行脚本完成创建文件游标和数据过滤,报表基于游标完成异步分页呈现。这里用了两个异步线程,取数线程通过封装好的文本接口返回查询游标将数据分批缓存到本地,呈现线程根据页数计算出行数到本地缓存中去获取数据显示。这里已经解决了翻页效率和去头补尾的问题。
画个图感受一下:
②和③分别是两个线程,前者取数线程负责从文本里分批取数缓存,后者呈现线程负责读缓存做报表呈现。
这样做以后,除了报表能异步查询外,还支持导出 Excel 和打印,比较方便。
猜你喜欢
- 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 90%测试猿都想学的Jmeter技能,你get吗?
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 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)
本文暂时没有评论,来添加一个吧(●'◡'●)