Die CSV-zu-YAML-Konvertierung wandelt tabellarische, kommagetrennte Daten in das YAML-Format (YAML Ain't Markup Language) um. Jede Zeile der CSV-Datei wird zu einem Eintrag in einer YAML-Sequenz, und jeder Spaltenkopf wird zum Schlüssel in einem YAML-Mapping. Das Ergebnis ist ein menschenlesbares, einrückungsbasiertes Dokument, das Konfigurationswerkzeuge und Datenpipelines direkt parsen können — ohne zusätzliche Schema-Dateien.
YAML wurde erstmals 2001 vorgeschlagen und erreichte seine aktuelle Spezifikation (YAML 1.2) im Jahr 2009. Es ist das Standard-Konfigurationsformat für Kubernetes-Manifeste, Docker-Compose-Dateien, Ansible-Playbooks, GitHub-Actions-Workflows und viele CI/CD-Systeme. Wenn die Quelldaten in einer Tabellenkalkulation oder einem Datenbankexport vorliegen, ist die CSV-zu-YAML-Konvertierung der schnellste Weg, um Konfigurationseinträge, Seed-Data-Fixtures oder Testeingaben für diese Systeme zu erzeugen.
Ein korrekter CSV-zu-YAML-Konverter muss die RFC-4180-Parsing-Regeln beachten: Felder in Anführungszeichen mit Kommas oder Zeilenumbrüchen, maskierte doppelte Anführungszeichen und unterschiedliche Trennzeichen. Auf der YAML-Seite müssen Zeichenketten, die wie Booleans (yes, no, true, false), Zahlen oder null aussehen, in Anführungszeichen gesetzt werden, damit YAML-Parser sie nicht in unbeabsichtigte Typen umwandeln. Der Konverter sollte außerdem Unicode-Inhalte verarbeiten und gültige UTF-8-Ausgaben erzeugen, da YAML 1.2 UTF-8 als Standard-Kodierung vorschreibt.
Warum einen CSV-zu-YAML-Konverter verwenden?
YAML aus Tabellendaten manuell zu schreiben ist mühsam und fehleranfällig. Eine falsch gesetzte Einrückung oder ein nicht in Anführungszeichen gesetztes Sonderzeichen erzeugt ungültiges YAML, das Konfigurations-Deployments oder Datenimporte abbricht. Dieser Konverter parst CSV-Felder, ordnet Spaltenköpfe als Schlüssel zu und erzeugt korrekt eingerücktes, sauber gequotetes YAML.
⚡
Sofortige Konvertierung im Browser
CSV einfügen oder hochladen und sofort gültige YAML-Ausgabe erhalten. Keine CLI-Tools zu installieren, keine Bibliotheken zu importieren, kein Build-Schritt erforderlich.
🔒
Daten bleiben privat
Das gesamte Parsing und die Konvertierung laufen lokal im Browser per JavaScript. Deine CSV-Daten verlassen nie deinen Rechner, werden nie an einen Server gesendet und nie gespeichert oder protokolliert.
🎯
Korrekt formatiertes YAML erzeugen
Die Ausgabe verwendet korrekte Einrückungen, setzt Zeichenketten in Anführungszeichen, die sonst als Booleans oder Zahlen interpretiert würden, und erzeugt gültiges YAML 1.2, das jeden Linter oder Schema-Validator besteht.
📋
Jeden CSV-Dialekt verarbeiten
Erkennt automatisch Kommas, Semikolons, Tabulatoren und Pipes als Trennzeichen. Unterstützt RFC-4180-Quoting-Regeln einschließlich maskierter Anführungszeichen, mehrzeiliger Felder und UTF-8-Dateien mit BOM-Präfix.
Anwendungsfälle für CSV zu YAML
Kubernetes- und Docker-Compose-Konfiguration
Umgebungsvariablen-Blöcke, ConfigMap-Datenbereiche oder Docker-Compose-Service-Definitionen aus einer Tabelle mit Konfigurationswerten erzeugen. Die YAML-Ausgabe direkt in Manifest-Dateien einfügen.
Ansible-Playbook-Daten
Ein CSV-Inventar mit Hosts, Rollen und Variablen in YAML-formatierte Variablendateien (group_vars, host_vars) umwandeln, die Ansible nativ einliest — ohne benutzerdefinierte Parsing-Plugins.
CI/CD-Pipeline-Konfiguration
Eine Tabelle mit Build-Matrix-Einträgen, Umgebungsvariablen oder Deployment-Zielen in GitHub-Actions-, GitLab-CI- oder CircleCI-YAML-Konfigurationsblöcke umwandeln. Vermeidet manuelles Eintippen repetitiver Matrix-Definitionen.
Datenbank-Seed-Fixtures
Rails, Django und andere Frameworks verwenden YAML für Test-Fixtures und Seed-Daten. Einen CSV-Datenbankexport in eine YAML-Fixture-Datei umwandeln, die das ORM direkt in die Testdatenbank laden kann.
Datenpipeline-Transformation
ETL-Pipelines, die YAML-Eingaben akzeptieren, können konvertierte CSV-Daten ohne einen zwischengeschalteten JSON-Schritt verarbeiten. Tools wie dbt, Dagster und Prefect verwenden YAML für Pipeline-Definitionen und Konfigurationen.
YAML-Syntax erlernen
Studierende und Entwickler, die neu in YAML sind, können vertraute CSV-Daten einfügen und sehen, wie tabellarische Zeilen in Sequenzen und Mappings übersetzt werden. Der Vergleich von Ein- und Ausgabe verdeutlicht Einrückungsregeln, Schlüssel-Wert-Syntax und Typenbehandlung.
CSV-zu-YAML-Zuordnungsreferenz
Jedes strukturelle Element einer CSV-Datei hat ein direktes Gegenstück in YAML.
CSV-Konzept
YAML-Äquivalent
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 vs. YAML
CSV ist ein flaches, trennzeichenbasiertes Format ohne Typinformationen oder Hierarchie. YAML ist eine Obermenge von JSON, die Einrückungen für Verschachtelungen nutzt, mehrere Datentypen unterstützt und Kommentare erlaubt. Die Wahl hängt davon ab, was das nachgelagerte Tool erwartet.
CSV
Klartext, ein Datensatz pro Zeile. Jeder Wert ist eine Zeichenkette. Keine Hierarchie, Verschachtelung oder Kommentare. Geringe Dateigröße. Universell unterstützt von Tabellenkalkulationen, Datenbanken und Kommandozeilen-Tools. Durch RFC 4180 definiert. Am besten geeignet für den Massentransfer tabellarischer Daten zwischen Systemen, die sich auf Spaltenreihenfolge und Typen einigen.
YAML
Einrückungsbasiertes Format mit nativer Unterstützung für Zeichenketten, Integer, Floats, Booleans, null, Datumsangaben, Sequenzen (Arrays) und Mappings (Objekte). Erlaubt Inline-Kommentare mit #. Wird als primäres Konfigurationsformat für Kubernetes, Docker Compose, Ansible, GitHub Actions und die meisten modernen DevOps-Tools verwendet. YAML 1.2 ist eine Obermenge von JSON — jedes gültige JSON ist auch gültiges YAML.
Code-Beispiele
Funktionierende Beispiele in Node.js, Python, Go und CLI-Tools. Jedes liest die CSV-Kopfzeile als YAML-Schlüssel, ordnet jede Datenzeile einem Sequenzeintrag zu und setzt typambivalente Werte in Anführungszeichen.
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
Häufig gestellte Fragen
Wie funktioniert die CSV-zu-YAML-Konvertierung?
Der Konverter liest die erste Zeile als Spaltenköpfe. Jede weitere Zeile wird zu einem YAML-Mapping (Schlüssel-Wert-Objekt), und alle Mappings werden in einer YAML-Sequenz (Array) gesammelt. Das Ergebnis ist eine Liste von Objekten, bei der jeder Schlüssel aus dem Spaltenkopf und jeder Wert aus dem Zellinhalt stammt.
Was passiert mit Werten wie "true", "yes" oder "null" in meiner CSV?
YAML-Parser interpretieren bare Werte wie true, false, yes, no und null als typisierte Werte statt als Zeichenketten. Der Konverter setzt diese Werte in Anführungszeichen, damit sie in der Ausgabe als Zeichenketten erhalten bleiben. Eine CSV-Zelle mit dem Inhalt "yes" wird beispielsweise zu '"yes"' in der YAML-Ausgabe, sodass das Konfigurationswerkzeug es nicht als Boolean interpretiert.
Kann ich YAML zurück in CSV konvertieren?
Ja, sofern das YAML eine flache Sequenz von Mappings ist (Array von Objekten mit skalaren Werten). Verschachtelte YAML-Strukturen mit tief verschachtelten Maps oder gemischten Typen lassen sich nicht sauber als CSV-Zeilen darstellen. Für flache Strukturen übernehmen Tools wie yq, Miller (mlr) oder Pythons yaml- und csv-Module die Rückkonvertierung.
Was ist der Unterschied zwischen CSV zu YAML und CSV zu JSON?
Beide erzeugen strukturierte Daten aus flachen CSV-Eingaben. JSON verwendet geschweifte Klammern und eckige Klammern mit strikten Quoting-Regeln. YAML verwendet Einrückungen und Doppelpunkte, unterstützt Kommentare und ist einfacher von Hand zu lesen und zu bearbeiten. Die meisten DevOps-Tools (Kubernetes, Ansible, Docker Compose) erwarten YAML. Die meisten Web-APIs und JavaScript-basierten Tools erwarten JSON.
Wie werden Zahlen und Datumsangaben in der Ausgabe behandelt?
CSV behandelt jeden Wert als Zeichenkette. YAML-Parser erkennen unquotierte Zahlen (42, 3.14) und ISO-Daten (2024-01-15) automatisch als ihre jeweiligen Typen. Sollen alle Werte als Zeichenketten erhalten bleiben, kann der Konverter jeden Wert in Anführungszeichen setzen. Wer Typinferenz wünscht, lässt Werte unquotiert und überlässt dem YAML-Parser die Typauflösung.
Verarbeitet der Konverter große CSV-Dateien?
Das Tool läuft vollständig im Browser, daher hängt die Leistung vom verfügbaren Arbeitsspeicher und den Grenzen des Browser-Tabs ab. Dateien bis zu einigen Megabyte (Zehntausende von Zeilen) werden auf moderner Hardware problemlos konvertiert. Für sehr große Dateien (100 MB+) empfiehlt sich ein CLI-Tool wie Pythons csv- und yaml-Module, Gos encoding/csv mit gopkg.in/yaml.v3 oder Miller (mlr), das Daten als Stream verarbeitet, ohne alles in den Speicher zu laden.
Wird YAML 1.1 oder YAML 1.2 ausgegeben?
Dieses Tool erzeugt YAML-1.2-Ausgabe. Der wesentliche Unterschied zu YAML 1.1 besteht darin, dass 1.2 das "Norwegen-Problem" (bare 'no' wird als boolesches false interpretiert) behoben und die JSON-Kompatibilität angepasst hat. Die meisten modernen Parser (Go yaml.v3, Python PyYAML mit safe_load, Ruby Psych) unterstützen YAML 1.2. Falls ein Tool 1.1-Kompatibilität erfordert, wird die Ausgabe in fast allen Fällen trotzdem korrekt geparst, da 1.2 für gängige Strukturen abwärtskompatibel ist.