A conversão de CSV para YAML transforma dados tabulares separados por vírgula no formato YAML (YAML Ain't Markup Language). Cada linha do arquivo CSV se torna uma entrada em uma sequência YAML, e cada cabeçalho de coluna é mapeado para uma chave em um mapeamento YAML. O resultado é um documento legível por humanos, baseado em indentação, que ferramentas de configuração e pipelines de dados conseguem interpretar diretamente sem arquivos de esquema adicionais.
O YAML foi proposto pela primeira vez em 2001 e chegou à sua especificação atual (YAML 1.2) em 2009. É o formato de configuração padrão para manifests do Kubernetes, arquivos Docker Compose, playbooks do Ansible, workflows do GitHub Actions e muitos sistemas de CI/CD. Quando seus dados de origem estão em uma planilha ou exportação de banco de dados, converter CSV para YAML é a forma mais rápida de gerar entradas de configuração, fixtures de seed de dados ou entradas de teste para esses sistemas.
Um conversor correto de CSV para YAML deve seguir as regras de parsing do RFC 4180: campos entre aspas contendo vírgulas ou quebras de linha, aspas duplas escapadas e delimitadores variáveis. No lado do YAML, strings que parecem booleanos (yes, no, true, false), números ou null devem ser colocadas entre aspas para evitar que os parsers YAML as convertam em tipos não esperados. O conversor também deve tratar conteúdo Unicode e produzir saída UTF-8 válida, já que o YAML 1.2 exige UTF-8 como codificação padrão.
Por que usar um Conversor de CSV para YAML?
Escrever YAML à mão a partir de dados de planilha é tedioso e propenso a erros. Um espaço mal posicionado ou um caractere especial sem aspas produz YAML inválido que quebra implantações de configuração ou importações de dados. Este conversor interpreta os campos CSV, mapeia os cabeçalhos para chaves e gera saída YAML corretamente indentada e com aspas adequadas.
⚡
Converta instantaneamente no navegador
Cole ou faça upload de dados CSV e obtenha saída YAML válida imediatamente. Sem ferramentas de linha de comando para instalar, sem bibliotecas para importar, sem etapa de build necessária.
🔒
Mantenha seus dados privados
Todo o parsing e a conversão acontecem localmente no seu navegador usando JavaScript. Seus dados CSV nunca saem da sua máquina, nunca são enviados para um servidor e nunca são armazenados ou registrados em log.
🎯
Produza YAML corretamente formatado
A saída usa indentação adequada, coloca entre aspas strings que de outra forma seriam interpretadas como booleanos ou números, e gera YAML 1.2 válido que passa em qualquer linter ou validador de esquema.
📋
Lide com qualquer dialeto CSV
Detecta automaticamente vírgulas, ponto e vírgula, tabulações e pipes como delimitadores. Suporta as regras de aspas do RFC 4180, incluindo aspas duplas escapadas, campos multilinhas e arquivos UTF-8 com BOM.
Casos de Uso do CSV para YAML
Configuração do Kubernetes e Docker Compose
Gere blocos de variáveis de ambiente, seções de dados do ConfigMap ou definições de serviços do Docker Compose a partir de uma planilha de valores de configuração. Cole a saída YAML diretamente nos seus arquivos de manifest.
Dados para playbooks do Ansible
Converta um inventário CSV de hosts, funções e variáveis em arquivos de variáveis formatados em YAML (group_vars, host_vars) que o Ansible lê nativamente, sem nenhum plugin de parsing personalizado.
Configuração de pipelines de CI/CD
Transforme uma planilha de entradas de matriz de build, variáveis de ambiente ou alvos de implantação em blocos de configuração YAML para GitHub Actions, GitLab CI ou CircleCI. Evita a digitação manual de definições de matriz repetitivas.
Fixtures de seed de banco de dados
Rails, Django e outros frameworks usam YAML para fixtures de teste e dados de seed. Converta uma exportação CSV de banco de dados em um arquivo de fixture YAML que o ORM consegue carregar diretamente no banco de dados de teste.
Transformação em pipelines de dados
Pipelines de ETL que aceitam entradas YAML podem ingerir dados CSV convertidos sem uma etapa intermediária em JSON. Ferramentas como dbt, Dagster e Prefect usam YAML para definições de pipeline e configuração.
Aprendizado de sintaxe YAML
Estudantes e desenvolvedores que estão começando com YAML podem colar dados CSV conhecidos e ver como linhas tabulares se traduzem em sequências e mapeamentos. Comparar a entrada e a saída esclarece as regras de indentação, a sintaxe de chave-valor e o tratamento de tipos.
Referência de Mapeamento CSV para YAML
Cada elemento estrutural de um arquivo CSV tem uma contraparte direta no YAML.
Conceito CSV
Equivalente YAML
Detalhes
CSV file
YAML document
The entire file becomes a YAML sequence (array) of mappings
Header row
Mapping keys
Each column header becomes a key in every mapping entry
Data row
Sequence item (- ...)
Each row becomes one mapping item in the top-level array
Cell value
Scalar value
Strings, numbers, and booleans are inferred by YAML parsers
Empty cell
null or empty string
Rendered as null, ~, or an empty value depending on the tool
Comma delimiter
Indentation + colon
CSV delimiters are replaced by YAML key: value structure
CSV vs YAML
CSV é um formato plano, separado por delimitadores, sem informações de tipo ou hierarquia. YAML é um superconjunto do JSON que usa indentação para aninhamento, suporta múltiplos tipos de dados e permite comentários. A escolha depende do que sua ferramenta downstream espera.
CSV
Texto simples, um registro por linha. Todos os valores são strings. Sem hierarquia, aninhamento ou comentários. Tamanho de arquivo mínimo. Suportado universalmente por planilhas, bancos de dados e ferramentas de linha de comando. Definido pelo RFC 4180. Ideal para transferência em massa de dados tabulares entre sistemas que concordam com a ordem e os tipos das colunas.
YAML
Formato baseado em indentação com suporte nativo a strings, inteiros, floats, booleanos, null, datas, sequências (arrays) e mapeamentos (objetos). Permite comentários inline com #. Usado como formato de configuração principal para Kubernetes, Docker Compose, Ansible, GitHub Actions e a maioria das ferramentas modernas de DevOps. O YAML 1.2 é um superconjunto do JSON, portanto qualquer JSON válido também é YAML válido.
Exemplos de Código
Exemplos funcionais em Node.js, Python, Go e ferramentas de linha de comando. Cada um lê a linha de cabeçalho do CSV como chaves YAML, mapeia cada linha de dados para uma entrada de sequência e trata as aspas para valores com tipos ambíguos.
JavaScript (Node.js)
import { parse } from 'csv-parse/sync'
import { stringify } from 'yaml'
const csv = `name,age,city
Alice,30,Berlin
Bob,25,"New York"`
const records = parse(csv, { columns: true, skip_empty_lines: true })
console.log(stringify(records))
// → - name: Alice
// → age: "30"
// → city: Berlin
// → - name: Bob
// → age: "25"
// → city: New York
// Vanilla JS (no dependencies)
function csvToYaml(csv) {
const [headerLine, ...dataLines] = csv.trim().split('\n')
const headers = headerLine.split(',')
return dataLines.map(line => {
const values = line.split(',')
return headers.map((h, i) => ` ${h}: ${values[i] || ''}`).join('\n')
}).map(block => `- ${block.trimStart()}`).join('\n')
}
Python
import csv, io, yaml
csv_string = """name,age,city
Alice,30,Berlin
Bob,25,New York"""
reader = csv.DictReader(io.StringIO(csv_string))
data = list(reader)
# default_flow_style=False produces block-style YAML
print(yaml.dump(data, default_flow_style=False, sort_keys=False))
# → - age: '30'
# → city: Berlin
# → name: Alice
# → - age: '25'
# → city: New York
# → name: Bob
# Preserve insertion order with sort_keys=False (Python 3.7+)
# To type-cast numbers: data = [{k: int(v) if v.isdigit() else v ...}]
Go
package main
import (
"encoding/csv"
"fmt"
"gopkg.in/yaml.v3"
"strings"
)
func main() {
input := "name,age,city
Alice,30,Berlin
Bob,25,New York"
r := csv.NewReader(strings.NewReader(input))
records, _ := r.ReadAll()
headers := records[0]
var data []map[string]string
for _, row := range records[1:] {
entry := make(map[string]string)
for i, h := range headers {
entry[h] = row[i]
}
data = append(data, entry)
}
out, _ := yaml.Marshal(data)
fmt.Println(string(out))
// → - age: "30"
// → city: Berlin
// → name: Alice
// → - age: "25"
// → city: New York
// → name: Bob
}
CLI (yq / Miller)
# Using yq (https://github.com/mikefarah/yq)
# yq reads CSV with --input-format=csv
yq --input-format=csv --output-format=yaml '.' data.csv
# Using Miller (mlr) — converts between CSV, JSON, YAML, and more
mlr --icsv --oyaml cat data.csv
# Python one-liner for quick conversion
python3 -c "
import csv, sys, yaml
data = list(csv.DictReader(sys.stdin))
print(yaml.dump(data, default_flow_style=False, sort_keys=False))
" < data.csv
Perguntas Frequentes
Como funciona a conversão de CSV para YAML?
O conversor lê a primeira linha como cabeçalhos de coluna. Cada linha subsequente se torna um mapeamento YAML (objeto de chave-valor), e todos os mapeamentos são coletados em uma sequência YAML (array). O resultado é uma lista de objetos onde cada chave vem do cabeçalho e cada valor vem do conteúdo da célula.
O que acontece com valores como "true", "yes" ou "null" no meu CSV?
Parsers YAML interpretam bare true, false, yes, no e null como valores tipados em vez de strings. O conversor coloca esses valores entre aspas para que permaneçam como strings na saída. Por exemplo, uma célula CSV contendo "yes" vira '"yes"' na saída YAML, impedindo que sua ferramenta de configuração o interprete como booleano.
Posso converter YAML de volta para CSV?
Sim, desde que o YAML seja uma sequência plana de mapeamentos (array de objetos com valores escalares). Estruturas YAML aninhadas com mapas profundamente encadeados ou tipos mistos não podem ser representadas de forma limpa como linhas CSV. Para estruturas planas, ferramentas como yq, Miller (mlr) ou os módulos yaml e csv do Python fazem a conversão inversa.
Qual é a diferença entre CSV para YAML e CSV para JSON?
Ambos produzem dados estruturados a partir de uma entrada CSV plana. JSON usa chaves e colchetes com regras estritas de aspas. YAML usa indentação e dois-pontos, suporta comentários e é mais fácil de ler e editar manualmente. A maioria das ferramentas de DevOps (Kubernetes, Ansible, Docker Compose) espera YAML. A maioria das APIs web e ferramentas baseadas em JavaScript espera JSON.
Como números e datas são tratados na saída?
CSV trata todos os valores como strings. Parsers YAML detectam automaticamente números sem aspas (42, 3.14) e datas ISO (2024-01-15) como seus respectivos tipos. Se você precisar que todos os valores permaneçam como strings, o conversor pode colocar todos entre aspas. Se quiser inferência de tipos, deixe os valores sem aspas e permita que o parser YAML resolva os tipos.
O conversor suporta arquivos CSV grandes?
A ferramenta roda inteiramente no seu navegador, portanto o desempenho depende da memória disponível e dos limites da aba do navegador. Arquivos de até alguns megabytes (dezenas de milhares de linhas) convertem sem problemas em hardware moderno. Para arquivos muito grandes (100 MB+), use uma ferramenta de linha de comando como os módulos csv e yaml do Python, Go com encoding/csv e gopkg.in/yaml.v3, ou Miller (mlr), que conseguem transmitir os dados sem carregar tudo na memória.
A saída é YAML 1.1 ou YAML 1.2?
Esta ferramenta produz saída YAML 1.2. A principal diferença em relação ao YAML 1.1 é que a versão 1.2 eliminou o "problema da Noruega" (bare 'no' interpretado como booleano false) e alinhou sua compatibilidade com JSON. A maioria dos parsers modernos (Go yaml.v3, Python PyYAML com safe_load, Ruby Psych) suporta YAML 1.2. Se sua ferramenta exigir compatibilidade com 1.1, a saída ainda será interpretada corretamente na quase totalidade dos casos, pois 1.2 é retrocompatível para estruturas comuns.