CSV naar YAML-conversie zet tabellarische, kommagescheiden gegevens om naar YAML-formaat (YAML Ain't Markup Language). Elke rij van het CSV-bestand wordt een item in een YAML-reeks, en elke kolomkop wordt een sleutel in een YAML-mapping. Het resultaat is een goed leesbaar, inspringing-gebaseerd document dat configuratietools en datapipelines direct kunnen verwerken zonder extra schemabestanden.
YAML werd voor het eerst voorgesteld in 2001 en bereikte zijn huidige specificatie (YAML 1.2) in 2009. Het is het standaard configuratieformaat voor Kubernetes-manifesten, Docker Compose-bestanden, Ansible-playbooks, GitHub Actions-workflows en veel CI/CD-systemen. Als je brongegevens in een spreadsheet of database-export staan, is CSV naar YAML converteren de snelste manier om configuratie-items, seed-datafixtures of testinvoer voor deze systemen te genereren.
Een correcte CSV naar YAML-converter moet RFC 4180-parsingregels verwerken: geciteerde velden met komma's of regeleinden, geëscapete dubbele aanhalingstekens en wisselende scheidingstekens. Aan de YAML-kant moeten strings die op booleans lijken (yes, no, true, false), getallen of null worden geciteerd om te voorkomen dat YAML-parsers ze naar onbedoelde typen converteren. De converter moet ook Unicode-inhoud verwerken en geldige UTF-8-uitvoer produceren, aangezien YAML 1.2 UTF-8 als standaardcodering vereist.
Waarom een CSV naar YAML-converter gebruiken?
YAML handmatig schrijven vanuit spreadsheetgegevens is omslachtig en foutgevoelig. Een verkeerd geplaatste inspringing of een ongeciteerd speciaal teken levert ongeldige YAML op die configuratie-deployments of data-imports breekt. Deze converter parseert CSV-velden, koppelt koppen aan sleutels en genereert correct ingesprongen, juist geciteerde YAML-uitvoer.
⚡
Direct converteren in je browser
Plak of upload CSV-gegevens en ontvang direct geldige YAML-uitvoer. Geen CLI-tools om te installeren, geen libraries om te importeren, geen buildstap vereist.
🔒
Gegevens privé houden
Alle verwerking en conversie vindt lokaal in je browser plaats via JavaScript. Je CSV-gegevens verlaten je machine nooit, worden nooit naar een server gestuurd en worden nooit opgeslagen of gelogd.
🎯
Correct opgemaakte YAML produceren
De uitvoer gebruikt de juiste inspringing, citeert strings die anders als booleans of getallen worden geïnterpreteerd en genereert geldige YAML 1.2 die door elke linter of schemavalidator komt.
📋
Elk CSV-dialect verwerken
Detecteert automatisch komma's, puntkomma's, tabs en pipes als scheidingstekens. Ondersteunt RFC 4180-aanhalingsregels inclusief geëscapete dubbele aanhalingstekens, meerdere regels per veld en BOM-voorafgaande UTF-8-bestanden.
CSV naar YAML-toepassingen
Kubernetes- en Docker Compose-configuratie
Genereer omgevingsvariabeleblokken, ConfigMap-datasecties of Docker Compose-servicedefinities vanuit een spreadsheet met configuratiewaarden. Plak de YAML-uitvoer direct in je manifestbestanden.
Ansible-playbookgegevens
Converteer een CSV-inventaris van hosts, rollen en variabelen naar YAML-geformatteerde variabelebestanden (group_vars, host_vars) die Ansible native inleest zonder aangepaste parserplugins.
CI/CD-pipelineconfiguratie
Zet een spreadsheet van buildmatrix-items, omgevingsvariabelen of deploydoelen om naar GitHub Actions-, GitLab CI- of CircleCI-YAML-configuratieblokken. Voorkomt handmatig typen van repetitieve matrixdefinities.
Database-seedfixtures
Rails, Django en andere frameworks gebruiken YAML voor testfixtures en seedgegevens. Converteer een CSV-database-export naar een YAML-fixturbestand dat het ORM direct in de testdatabase kan laden.
Datapipelinetransformatie
ETL-pipelines die YAML-invoer accepteren kunnen geconverteerde CSV-gegevens opnemen zonder een tussenliggende JSON-stap. Tools zoals dbt, Dagster en Prefect gebruiken YAML voor pipelinedefinities en configuratie.
YAML-syntaxis leren
Studenten en ontwikkelaars die nieuw zijn met YAML kunnen vertrouwde CSV-gegevens plakken en zien hoe tabellarische rijen worden omgezet naar reeksen en mappings. Het vergelijken van invoer en uitvoer verduidelijkt inspring- regels, sleutel-waarde-syntaxis en typeafhandeling.
Referentie: CSV naar YAML-mapping
Elk structureel element van een CSV-bestand heeft een directe tegenhanger in YAML.
CSV-concept
YAML-equivalent
Details
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 versus YAML
CSV is een plat, scheidingsteken-gebaseerd formaat zonder type-informatie of hiërarchie. YAML is een superset van JSON die inspringing gebruikt voor nesting, meerdere gegevenstypen ondersteunt en commentaar toestaat. De keuze hangt af van wat je downstream tool verwacht.
CSV
Platte tekst, één record per regel. Elke waarde is een string. Geen hiërarchie, nesting of commentaar. Minimale bestandsgrootte. Universeel ondersteund door spreadsheets, databases en command-line tools. Gedefinieerd door RFC 4180. Het meest geschikt voor het overdragen van grote hoeveelheden tabellarische gegevens tussen systemen die het eens zijn over kolomvolgorde en -typen.
YAML
Inspringing-gebaseerd formaat met native ondersteuning voor strings, integers, floats, booleans, null, datums, reeksen (arrays) en mappings (objecten). Staat inline commentaar toe met #. Gebruikt als primair configuratieformaat voor Kubernetes, Docker Compose, Ansible, GitHub Actions en de meeste moderne DevOps-tools. YAML 1.2 is een superset van JSON, dus elke geldige JSON is ook geldige YAML.
Codevoorbeelden
Werkende voorbeelden in Node.js, Python, Go en CLI-tools. Elk voorbeeld leest de CSV-headerrij als YAML-sleutels, koppelt elke gegevensrij aan een reeks-item en verwerkt citering voor type-ambigue waarden.
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
Veelgestelde vragen
Hoe werkt CSV naar YAML-conversie?
De converter leest de eerste rij als kolomkoppen. Elke volgende rij wordt een YAML-mapping (sleutel-waarde-object), en alle mappings worden verzameld in een YAML-reeks (array). Het resultaat is een lijst van objecten waarbij elke sleutel afkomstig is van de kop en elke waarde uit de celinhoud.
Wat gebeurt er met waarden zoals "true", "yes" of "null" in mijn CSV?
YAML-parsers interpreteren ongecieerde true, false, yes, no en null als getypeerde waarden in plaats van strings. De converter citeert deze waarden zodat ze als strings in de uitvoer blijven. Een CSV-cel met "yes" wordt bijvoorbeeld '"yes"' in de YAML-uitvoer, zodat je configuratietool het niet als boolean interpreteert.
Kan ik YAML terug naar CSV converteren?
Ja, zolang de YAML een platte reeks van mappings is (array van objecten met scalaire waarden). Geneste YAML-structuren met diep geneste maps of gemengde typen kunnen niet netjes als CSV-rijen worden weergegeven. Voor platte structuren verwerken tools zoals yq, Miller (mlr) of Python's yaml- en csv-modules de omgekeerde conversie.
Wat is het verschil tussen CSV naar YAML en CSV naar JSON?
Beide produceren gestructureerde gegevens uit platte CSV-invoer. JSON gebruikt accolades en haakjes met strikte aanhalingsregels. YAML gebruikt inspringing en dubbele punten, ondersteunt commentaar en is makkelijker te lezen en handmatig te bewerken. De meeste DevOps-tools (Kubernetes, Ansible, Docker Compose) verwachten YAML. De meeste web-API's en JavaScript-gebaseerde tools verwachten JSON.
Hoe worden getallen en datums verwerkt in de uitvoer?
CSV behandelt elke waarde als een string. YAML-parsers detecteren automatisch ongeciteerde getallen (42, 3.14) en ISO-datums (2024-01-15) als hun respectieve typen. Als je wilt dat alle waarden als strings blijven, kan de converter elke waarde citeren. Als je type-inferentie wilt, laat je waarden ongeciteerd en laat je de YAML-parser de typeresolutie afhandelen.
Verwerkt de converter grote CSV-bestanden?
Het hulpmiddel draait volledig in je browser, dus de prestaties zijn afhankelijk van het beschikbare geheugen en de limieten van het browsertabblad. Bestanden tot enkele megabytes (tienduizenden rijen) worden zonder problemen geconverteerd op moderne hardware. Voor zeer grote bestanden (100MB+) kun je beter een CLI-tool gebruiken, zoals Python's csv- en yaml-modules, Go's encoding/csv met gopkg.in/yaml.v3, of Miller (mlr), die gegevens als stream verwerkt zonder alles in het geheugen te laden.
Produceert de converter YAML 1.1- of YAML 1.2-uitvoer?
Dit hulpmiddel produceert YAML 1.2-uitvoer. Het belangrijkste verschil met YAML 1.1 is dat 1.2 het "Noorwegen-probleem" heeft afgeschaft (ongecierd 'no' geïnterpreteerd als boolean false) en de JSON-compatibiliteit heeft verbeterd. De meeste moderne parsers (Go yaml.v3, Python PyYAML met safe_load, Ruby Psych) ondersteunen YAML 1.2. Als je tool 1.1-compatibiliteit vereist, zal de uitvoer in vrijwel alle gevallen nog steeds correct worden verwerkt, aangezien 1.2 achterwaarts compatibel is voor veelvoorkomende structuren.