讀 CSV/TXT 的報表怎麼做分頁查詢?
很容易想到的辦法是把文字資料灌到 RDB 裡,利用資料庫分頁機制來做,但這樣做會對資料庫產生很大影響(容量和效能),畢竟要分頁查詢的資料量不會太小。而且如果 CSV/TXT 資料就是從資料庫匯出去的,那這種方式基本就行不通了。
用 JAVA 硬寫也是一種辦法,就是比較麻煩,除了要能完成過濾、分組等集合運算,還要考慮非同步查詢的效率,如果透過行號(要遍歷資料)確定每頁的查詢範圍,效率就非常低了;透過位元組數來確定每頁要讀的資料會快很多,但要保證每次讀取的資料是整條的,如果讀出的最後一條資料被截斷,要有“補尾”機制,下一頁再讀的時候又要“去頭”,要考慮的問題比較多。
直接用支援文字分頁查詢的報表工具會比較簡單,比如這裡介紹的實現過程: ,用兩行指令碼完成建立檔案遊標和資料過濾,報表基於遊標完成非同步分頁呈現。這裡用了兩個非同步執行緒,取數執行緒透過封裝好的文字介面返回查詢遊標將資料分批快取到本地,呈現執行緒根據頁數計算出行數到本地快取中去獲取資料顯示。這裡已經解決了翻頁效率和去頭補尾的問題。
畫個圖感受一下:
②和③分別是兩個執行緒,前者取數執行緒負責從文字里分批取數快取,後者呈現執行緒負責讀快取做報表呈現。
這樣做以後,除了報表能非同步查詢外,還支援匯出 Excel 和列印,比較方便。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69900830/viewspace-2700007/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 報表怎麼做模糊查詢
- 報表連 hive,資料量比較大,怎麼分頁查詢?Hive
- 百億級資料分表後怎麼分頁查詢?
- 百億級資料 分庫分表 後怎麼分頁查詢?
- 報表連 MongoDB,資料量大報表慢,怎麼做分頁?MongoDB
- 分庫分表後的分頁查詢
- 資料庫全表查詢之-分頁查詢優化資料庫優化
- MySQL的分頁查詢MySql
- 資料量很大,分頁查詢很慢,該怎麼優化?優化
- 億萬級分庫分表後如何進行跨表分頁查詢
- Elasticsearch 分頁查詢Elasticsearch
- hyperf 使用模型寫 union 子查詢並做分頁模型
- 報表的查詢皮膚怎麼顯示在左側?
- NET 集合分頁查詢
- AntDesignBlazor示例——分頁查詢Blazor
- ThinkPhp框架:分頁查詢PHP框架
- 分頁查詢優化優化
- sharding-jdbc分表場景下的分頁查詢最佳化JDBC
- SSH框架下的分頁查詢框架
- .NET ORM 分表分庫【到底】怎麼做?ORM
- elasticsearch查詢之大資料集分頁查詢Elasticsearch大資料
- MySQL分頁查詢優化MySql優化
- indexdb實現分頁查詢Index
- JSP怎樣將查詢的資料實現分頁操作JS
- 資料分析報表怎麼做
- MySQL——優化巢狀查詢和分頁查詢MySql優化巢狀
- 頁面怎麼做點選表頭排序排序
- Oracle總結【SQL細節、多表查詢、分組查詢、分頁】OracleSQL
- SAP RETAIL分配表的查詢報表AI
- [20210112]ashtop查詢特定表的SQL語句.txtSQL
- 關於 groupBy 分組查詢的分頁處理
- 菜品條件分頁查詢
- 【記錄】SSH分頁查詢功能
- Oracle資料庫中的分頁查詢Oracle資料庫
- Laravel-admin 自定義csv匯出,支援原有匯出csv的所有功能,匯出所有資料使用分頁查詢處理Laravel
- excel表格分頁怎麼重複表頭 excel表怎樣讓每頁都有表頭Excel
- 使用Mybatis-plus進行分頁查詢,沒有分頁效果,查詢的資料量超出每頁數量設定MyBatis
- 讀寫分離 & 分庫分表 & 深度分頁