菜鸡请教一个问题

309 天前
 ys0316lover
有一个业务需要导出表内所有生效的数据,并且需要实时返给前端导出进度,库在 drds 下,该如何实现?
1499 次点击
所在节点    程序员
4 条回复
lsk569937453
309 天前
我理解的"导出"是指通过文件的方式下载到本地。后端将数据写入 inputstream 中,然后以"application/octet-stream"返回给前端就行了。

直接百度搜索"springboot+axios 下载进度"
KOMA1NIUJUNSHENG
309 天前
这不是百度都能搜到的答案吗
liuhailiang
309 天前
三个接口
1 、创建导出任务接口:接口立即返回 jobid ,同时开启线程执行导出追加写入文件,线程内执行逻辑先计算总行数,按数量定期更新已导出行数以便能算出导出进度,
2 、查询导出进度接口:前端通过接口 1 得到 jobid 后,轮训此接口,内部查询 job 的导出进度(已导出行数/总行数)
3 、下载 job 文件接口:通过接口 2 轮训结果为完成时,通过此接口下载文件

大体逻辑如上,过程中增加一些安全性、健壮性校验,比如如果表数据会随时增加,那导出时的最大 id 要记录;比如同一人多次点击导出的重复性(进行中任务)校验;比如多人同时导出是否可共用同一个 job ,防止大量导出任务搞挂程序;再比如,2 和 3 和可合并成一个接口,2 为 100%时候,附带下载链接;在比如下载的文件增加一些截止时间什么的好让用户知道下载到的文件截止时间;再比如,提供增量下载巴拉巴拉的节约服务器开销
dode
309 天前
jdbc 逐行处理,获取当前已经处理数量,

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/966281

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX