CSV zu YAML Konverter

YAML ist das, woraus moderne Konfigurationsdateien bestehen: Kubernetes-Manifeste, GitHub Actions-Workflows, Docker Compose, Ansible-Playbooks, Rails Fixtures. Dieser Konverter liest eine CSV und erzeugt eine YAML-Sequenz, bei der jede Zeile eine Zuordnung ist, die durch die Überschrift der Zeile gekennzeichnet ist. Die Ausgabe verwendet eine Einrückung von zwei Leerzeichen und eine Inline-Schwelle von 4 Ebenen, was dem Stil der meisten Editoren und Linter entspricht.

Wie CSV zu YAML wird

  1. 1

    Fügen Sie die CSV ein

    Ein Beispiel ist vorab geladen, damit Sie die Standardausgabe sehen können; ersetzen Sie es durch Ihre Daten.

  2. 2

    Wählen Sie das Trennzeichen

    Standardmäßig Komma. Geben Sie `\t` für tabulatorgetrennte Eingaben oder ein anderes einzelnes Zeichen ein, das Ihre Datei verwendet.

  3. 3

    Überschriften werden zu Schlüsseln

    Zeile 1 wird als Überschrift behandelt. Datenzeilen werden in derselben Reihenfolge wie die Quellspalten unter diesen Schlüsseln zu Zuordnungen.

  4. 4

    YAML sicher ausgegeben

    Die Ausgabe wird vom Symfony YAML-Komponenten gerendert, die Werte zitiert, wenn sonst Mehrdeutigkeiten mit Booleans, Zahlen oder Daten auftreten würden.

YAML Eigenheiten, die Sie kennen sollten, bevor Sie die Ausgabe einfügen

YAML ist bekanntlich an der Oberfläche nachsichtig und voller Fallen darunter. Der Dumper behandelt die meisten davon, aber Ihre Daten müssen dennoch die Rundreise überstehen.

Das Norwegen-Problem und Freunde

YAML 1.1 behandelt ein nacktes no, yes, on, off, true, false, y, n (und deren großgeschriebene Formen) als Booleans. Das bedeutet, dass eine Ländercode-Spalte mit NO für Norwegen stillschweigend zu false werden kann.

Quellzelle Ausgegeben als (nicht zitiert) Üblicherweise beabsichtigt als
NO false Das Land Norwegen
ON true Der Bundesstaat Ontario
123 123 Entweder Zahl oder ID
0100 64 (oktal!) Ein führender Null-Code

Der Dumper zitiert riskante Werte automatisch, aber wenn Sie falsche Typen in Ihrer Ausgabe sehen, wechseln Sie zu YAML 1.2-Parsern im Nachgang oder zitieren Sie die Werte, die Ihnen wichtig sind, explizit.

Formatierungsentscheidungen

  • Zwei Leerzeichen Einrückung. Standard für die meisten Editoren; Linter wie yamllint verwenden dies standardmäßig.
  • Inline-Schwelle 4. Tief verschachtelte Strukturen werden unterhalb der 4. Ebene in einer Zeile ausgegeben, darüber werden sie auf mehrere Zeilen erweitert. Passen Sie dies im Nachgang an, wenn Sie strengere Blöcke wünschen.
  • Anker und Aliase werden nicht generiert. Jede Zeile ist eine frische Zuordnung, selbst wenn Zeilen wiederholt werden.

Beispielausgabe

- name: Alice
  age: 30
- name: Bob
  age: 25

Wann man YAML über JSON wählen sollte

  • Manuell bearbeitete Konfigurationen, bei denen Kommentare und mehrzeilige Strings wichtig sind.
  • Kubernetes-Manifeste, CI-Pipelines, Ansible-Playbooks.
  • Jeder Kontext, in dem Menschen die Datei ebenso lesen wie Maschinen.

Andernfalls ist JSON strenger und schneller zu parsen, bevorzugen Sie es für Datenformate und generierte Payloads.

Häufig gestellte Fragen

YAML 1.1 interpretiert nacktes NO als Boolean. Der Konverter zitiert riskante Werte, aber wenn ein nachgelagerter Parser weiterhin Typen zwingt, zitieren Sie die problematischen Zellen, bevor Sie die Ausgabe einfügen, oder wechseln Sie zu einem YAML 1.2-Parser, der diese als einfache Strings behandelt.

Nicht mit diesem Konverter, jede Zeile wird zu einer flachen Zuordnung. Für verschachteltes YAML erstellen Sie ein kleines Skript um eine YAML-Bibliothek oder konvertieren Sie zuerst zu JSON und gestalten Sie das in einem JSON-Editor.

Zellen werden mit str_getcsv unter Verwendung Ihres gewählten Trennzeichens geparst. Zitierte Werte bewahren eingebettete Trennzeichen und Zitate auf die gleiche Weise, wie sie in einem echten CSV-Parser behandelt würden.

Ja. Die von Ihnen eingefügte CSV wird an unseren Server gesendet, weil Parsing und YAML-Serialisierung dort erfolgen. Sie wird nur zum Erzeugen der YAML-Ausgabe verwendet und nicht gespeichert.

Verwandte Tools

Tool in anderen Sprachen verfügbar