如何将Gerrit命令行查询的JSON结果导出为CSV或Excel?
Gerrit查询结果转CSV/Excel解决方案
一、修正Gerrit查询命令,正确输出JSON文件
你的原命令存在语法问题,修正后才能正常输出JSON结果到文件:
- 查询参数(
--format=JSON、--patch-sets等)需放在查询条件之后 - 正则表达式修正为正确格式(示例匹配以
my_gerrit_project开头的项目) - 确保引号闭合
修正后的命令:
ssh -p 29418 uie7*@buic-scm-*.com gerrit query "project:^my_gerrit_project branch:master status:merged after:2023-01-01" --patch-sets --files --comments --dependencies --all-approvals --submit-records --format=JSON > gerrit_results.json
执行后当前目录会生成gerrit_results.json,注意文件最后一条是统计信息的JSON,后续需要过滤。
二、用jq解析JSON生成CSV
1. 过滤无效统计记录
先去掉文件末尾的统计条目,只保留有效变更数据:
jq 'select(.type != "stats")' gerrit_results.json > filtered_results.json
2. 生成自定义字段的CSV
以下示例提取变更ID、主题、提交者、合并时间、补丁集数、审批人,你可以根据需求调整字段:
jq -r '["Change-ID", "Subject", "Owner", "Merged-Time", "Patch-Set-Count", "Approvers"], (.[] | [.id, .subject, .owner.name, .merged, (.patchSets | length), (.allApprovals | map(.by.name) | join(";"))]) | @csv' filtered_results.json > gerrit_output.csv
-r:输出原始字符串,避免JSON引号干扰.files | join(";"):如果需要添加变更文件列表,可在字段数组中加入该表达式.comments | map(.message) | join("\n"):如需提取评论内容,可添加此表达式
三、CSV转Excel(可选)
直接用Microsoft Excel或LibreOffice Calc打开gerrit_output.csv,再另存为.xlsx格式即可。也可以用命令行批量转换(需安装LibreOffice):
libreoffice --headless --convert-to xlsx gerrit_output.csv
常见问题排查
- SSH权限错误:检查Gerrit账户是否已添加你的SSH密钥,或尝试密码登录(若允许)
- jq解析报错:用
jq . filtered_results.json验证JSON格式是否有效 - CSV字段缺失:确认Gerrit返回的JSON中存在对应字段(比如
status:merged的变更必然有.merged字段)
内容的提问来源于stack exchange,提问作者Carmen
相关产品推荐
相关产品推荐

