Help us learn about your current experience with the documentation. Take the survey.
导出到 CSV
本文档列出了 GitLab 代码库中 CSV 导出的不同实现方式。
| 导出类型 | 实现方式 | 优点 | 缺点 | 现有示例 |
|---|---|---|---|---|
| 流式传输 | - 分批查询数据并生成到响应流中。 - 下载立即开始。 |
- 报告立即可用。 | - 无进度指示器。 - 需要稳定的网络连接。 |
导出审计事件日志 |
| 下载 | - 分批查询数据并写入临时文件。 - 将文件加载到内存中。 - 将文件发送给客户端。 |
- 报告立即可用。 | - 大量数据可能导致请求超时。 - 内存消耗大。 - 当用户跳转到其他页面时,请求会过期。 |
- 导出 Chain of Custody 报告 - 导出 License Usage 文件 |
| 作为电子邮件附件 | - 通过后台任务异步处理查询。 - 电子邮件将导出文件作为附件。 |
- 异步处理。 | - 需要用户使用其他应用(电子邮件)来下载 CSV。 - 邮件服务提供商可能会限制附件大小。 |
- 导出 issues - 导出 merge requests |
| 作为电子邮件中的可下载链接 (*) | - 通过后台任务异步处理查询。 - 电子邮件使用一个导出链接。 |
- 异步处理。 - 绕过邮件服务提供商的附件大小限制。 |
- 需要用户使用其他应用(电子邮件)。 - 需要额外的存储空间和清理工作。 |
导出用户权限 |
| 轮询(非持久状态) | - 通过后台任务异步处理查询。 - 前端(FE)每隔几秒轮询一次,检查 CSV 文件是否准备就绪。 |
- 异步处理。 - 完成后自动下载到本地机器。 - 应用内解决方案。 |
- 请求不可持久化 - 当用户跳转到其他页面时,请求会过期。 - 每次轮询请求都会处理 API。 |
导出漏洞 |
| 轮询(持久状态) (*) | - 通过后台任务异步处理查询。 - 后端(BE)维护导出状态。 - FE 每隔几秒轮询一次以检查状态。 - 导出准备就绪后,FE 显示“下载链接”。 - 用户可以下载或重新生成新报告。 |
- 异步处理。 - 轮询请求期间不进行数据库调用(在导出状态改变之前,返回 HTTP 304 状态)。 - 不要求用户在导出完成前停留在页面上。 - 应用内解决方案。 - 可以扩展为一个通用的 CSV 功能(例如仪表盘 / CSV API)。 |
- 需要在数据库中维护导出状态。 - 不会自动将 CSV 导出文件下载到本地机器,需要用户选择“下载”。 |
导出 Merge Commits 报告 |
标有 * 的导出类型目前正在进行中。