CSV-naar-YAML-converter

YAML vormt de basis van moderne configuratiebestanden: Kubernetes-manifesten, GitHub Actions-workflows, Docker Compose, Ansible-playbooks en Rails-fixtures. Deze converter leest een CSV en genereert een YAML-reeks waarbij elke rij een mapping wordt met de sleutels uit de koprij. De uitvoer gebruikt inspringen met twee spaties en een inline-drempel op niveau 4, wat aansluit bij de stijl van de meeste editors en linters.

Hoe CSV wordt omgezet in YAML

  1. 1

    Plak de CSV

    Een voorbeeld staat alvast klaar zodat u de standaardvorm van de uitvoer ziet; vervang het door uw eigen gegevens.

  2. 2

    Kies het scheidingsteken

    Standaard is dat de komma. Voer `\t` in voor door tabs gescheiden invoer, of elk ander enkel teken dat uw bestand gebruikt.

  3. 3

    Koppen worden sleutels

    Rij 1 wordt als koprij beschouwd. Gegevensrijen worden mappings onder die sleutels, in dezelfde volgorde als de bronkolommen.

  4. 4

    YAML wordt veilig gedumpt

    De uitvoer wordt gegenereerd door de Symfony YAML-component, die waarden tussen aanhalingstekens zet wanneer er anders verwarring met booleaanse waarden, getallen of datums zou ontstaan.

YAML-eigenaardigheden die u moet kennen voordat u de uitvoer plakt

YAML staat erom bekend aan de oppervlakte inschikkelijk te zijn, maar zit eronder vol valkuilen. De dumper vangt de meeste ervan op, maar uw gegevens moeten nog steeds een volledige heen-en-terugconversie doorstaan.

Het Noorwegen-probleem en zijn vrienden

YAML 1.1 behandelt kale waarden als no, yes, on, off, true, false, y en n (evenals hun hoofdlettervormen) als booleaanse waarden. Dat betekent dat een kolom met landcodes waarin NO voor Noorwegen staat, ongemerkt in false kan veranderen.

Broncel Uitgevoerd als (zonder aanhalingstekens) Meestal bedoeld als
NO false Het land Noorwegen
ON true De staat Ontario
123 123 Getal of ID
0100 64 (octaal!) Code met een voorloopnul

De dumper zet risicovolle waarden automatisch tussen aanhalingstekens, maar als u onjuiste typen in uw uitvoer ziet, stap dan verderop in de keten over op YAML 1.2-parsers of zet de waarden die u belangrijk vindt expliciet tussen aanhalingstekens.

Opmaakkeuzes

  • Inspringen met twee spaties. Standaard voor de meeste editors; linters zoals yamllint gebruiken dit als standaard.
  • Inline-drempel 4. Diep geneste structuren worden onder het vierde niveau op één regel weergegeven; daarboven worden ze over meerdere regels uitgevouwen. Pas dit verderop aan als u strengere blokken wilt.
  • Ankers en aliassen worden niet gegenereerd. Elke rij is een nieuwe mapping, zelfs als rijen zich herhalen.

Voorbeelduitvoer

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

Wanneer u YAML boven JSON kiest

  • Handmatig bewerkte configuraties, waar commentaar en tekst over meerdere regels belangrijk zijn.
  • Kubernetes-manifesten, CI-pipelines en Ansible-playbooks.
  • Elke situatie waarin mensen het bestand net zo vaak lezen als machines.

Anders is JSON strenger en sneller te parsen; geef daar de voorkeur aan voor transportformaten en gegenereerde payloads.

Veelgestelde vragen

YAML 1.1 interpreteert een kale NO als een booleaanse waarde. De converter zet risicovolle waarden tussen aanhalingstekens, maar als een latere parser toch typen afdwingt, zet dan de problematische cellen tussen aanhalingstekens voordat u de uitvoer plakt, of stap over op een YAML 1.2-parser die deze als gewone strings behandelt.

Met deze converter niet: elke rij wordt een platte mapping. Voor geneste YAML schrijft u een klein script rond een YAML-bibliotheek, of zet u de data eerst om naar JSON en geeft u die vervolgens vorm in een JSON-editor.

Cellen worden geparseerd met str_getcsv en het door u gekozen scheidingsteken. Waarden tussen aanhalingstekens behouden ingesloten scheidingstekens en aanhalingstekens op precies dezelfde manier als een echte CSV-parser dat zou doen.

Ja. De CSV die u plakt, wordt naar onze server gestuurd, omdat het parsen en de YAML-serialisatie daar plaatsvinden. Hij wordt alleen gebruikt om de YAML-uitvoer te genereren en wordt niet opgeslagen.

Gerelateerde tools

Tool beschikbaar in andere talen