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 报告

标有 * 的导出类型目前正在进行中。