YAML 转 CSV — 在浏览器中将 YAML 数据转为 CSV 表格
将 YAML 数据转换为 CSV 表格。支持嵌套结构、可配置分隔符和数组形式的输出。全部在客户端完成。
YAML 是行业因其可读性而选中的配置语言,CSV 则是行业因其无处不在而选中的数据格式。YAML 文件定义基础设施(Kubernetes manifests、Ansible playbooks)、应用设置(Spring Boot 配置、Rails 的 database.yml),以及流水线定义(GitHub Actions、GitLab CI)。CSV 文件则是让那些基于 YAML 运行的系统产生报表时得到的产物。从 YAML 到 CSV 的转换,是配置与报表之间的桥梁:服务列表变成服务元数据的电子表格,CI 流水线定义变成包含任务名及其触发条件的表格,一组特性开关则变成合规审计表。
转换在结构上很直接 —— YAML 的对象数组正好对应 CSV 的「表头加多行」模式 —— 但边界情况出在 YAML 那些 CSV 无法表示的特性上。anchor 和 alias 让 YAML 作者避免重复,转换器在扁平化之前就会把它们展开。像 !!int、!!bool 这样的标签让 YAML 可以携带带类型的值,转换器会把它们字符串化后写入 CSV 单元格。spec.containers[0].image 这种嵌套对象会变成点号表示法的列名,作为表头可读,但嵌套很深时就显得冗长。每个边界情况都有合理的默认处理方式,输出始终是任何电子表格应用都能打开的合法 CSV。
最终的交接:如果 CSV 输出要进入商业智能工具(Tableau、Power BI、Looker),请确认点号表示法的列头与工具的命名规则兼容(部分 BI 工具不接受列名中带点号)。如果 YAML 源中的对象数组不统一(每个对象的键都不同),CSV 的列数会是所有键的并集 —— 对于这种不规整数据,使用 JSON-to-CSV 工具更合适,因为 JSON 是更好的中间格式。如果目的地是数据库导入,多数数据库对结构化数据都有原生的 YAML 导入器,转一道 CSV 作为中间步骤可能是多余的。
使用方法
粘贴你的 YAML 数据
把 YAML 字符串或文件拖入输入区。解析器读取 YAML 1.2 —— 对象数组、数组的数组和嵌套映射。默认情况下,顶级数组被视为行数据来源。
选择行数据来源
如果 YAML 在顶级用一个映射包裹数组(例如 `items: [...]`),从下拉框选择数组对应的键。数组中每个对象的键会成为 CSV 的列标题。
复制或下载 CSV
默认分隔符是逗号。针对特定的导入目标可切换成分号、Tab 或竖线。下载为带 UTF-8 BOM 的 .csv 文件,或复制到剪贴板以便粘贴到电子表格。
常见问题
YAML 的 anchor 和 alias 能转换为 CSV 吗?
可以。YAML anchor(`&name`)和 alias(`*name`)在解析阶段就会被展开,展开后的数据再转为 CSV。merge key(`<<:`)也会在生成扁平表输出之前被合并。
转换过程中,嵌套的 YAML 对象会怎样处理?
嵌套对象会被扁平化,使用点号表示法作为列名。YAML 中像 `address.city` 的字段会成为名为 `address.city` 的 CSV 列,其值为字符串。深层嵌套会产生很多列 —— 若要扁平到合理的宽度,可能需要先做预处理。
对象中的 YAML 数组如何处理?
对象内的标量数组默认会用逗号连接成一个单元格。`[red, green, blue]` 这种数组会变成字符串 `red, green, blue`。如果逗号与 CSV 分隔符冲突,可以在设置中切换连接字符。
转换器会保留 YAML 键的顺序吗?
会保留。YAML 映射保持键的顺序,CSV 的列顺序与源数组中第一个对象的键顺序一致。如果后面的对象有额外的键,新列会追加到右侧。
限制说明
- 不支持 YAML 标签和自定义类型YAML 标签(如 `!!timestamp`、`!!binary`)会被解码为字符串形式,但不会转换为带类型的值。CSV 输出全是字符串 —— 类型格式化在电子表格应用里完成。
- 深层嵌套会让 CSV 变宽5 层深的 YAML 结构可能产生几十个点号表示法的列。旧版 Excel 的列上限是 256 列,新版是 16,384 列 —— 如果输出超过目标应用的列上限,请裁剪源 YAML。
- 标量 YAML 文件会生成单单元格的 CSV如果输入的 YAML 是标量(单个字符串、数字或布尔值),输出的 CSV 就是一个包含该值的单元格。转换器期望接收的是结构化数据,对标量 YAML 不会产生有意义的输出。
平台说明
- macOS
- Numbers 和 Mac 版 Excel 都能原生导入 CSV。当需要把 YAML 配置数据转换为电子表格、供非技术同事审阅时,这个浏览器工具是合适的选择。
- Linux
- 命令行等价命令:`yq -o csv input.yaml` 可以完成简单 YAML 的转换。本浏览器工具额外提供路径选择器、分隔符选项和 BOM 输出 —— 这些都是 yq 的 CSV 输出所没有的。
- Web
- 所有 YAML 解析和 CSV 生成都在客户端完成。不会有数据上传到任何服务器。页面加载后可离线使用。