CSV till YAML-konvertering omvandlar tabulär, kommaseparerad data till YAML-format (YAML Ain't Markup Language). Varje rad i CSV-filen blir en post i en YAML-sekvens, och varje kolumnrubrik mappas till en nyckel i en YAML-mappning. Resultatet är ett läsbart, indenteringsbaserat dokument som konfigurationsverktyg och datapipelines kan tolka direkt utan ytterligare schemafiler.
YAML föreslogs första gången 2001 och nådde sin nuvarande specifikation (YAML 1.2) år 2009. Det är standardkonfigurationsformatet för Kubernetes-manifest, Docker Compose-filer, Ansible-playbooks, GitHub Actions-arbetsflöden och många CI/CD-system. När källdata finns i ett kalkylblad eller en databasexport är konvertering från CSV till YAML det snabbaste sättet att generera konfigurationsposter, startdatafixtures eller testinmatningar för dessa system.
En korrekt CSV till YAML-konverterare måste hantera RFC 4180:s tolkningsregler: citerade fält som innehåller kommatecken eller radbrytningar, undkomna dubbla citattecken och varierande avgränsare. På YAML-sidan måste strängar som liknar booleaner (yes, no, true, false), tal eller null citeras för att förhindra att YAML-tolkare konverterar dem till oönskade typer. Konverteraren bör också hantera Unicode-innehåll och producera giltig UTF-8-utmatning, eftersom YAML 1.2 kräver UTF-8 som standardkodning.
Varför använda en CSV till YAML-konverterare?
Att skriva YAML för hand från kalkylbladsdata är omständligt och felbenäget. En felplacerad indentering eller ett ociterat specialtecken producerar ogiltig YAML som bryter konfigurationsdriftsättningar eller dataimporter. Den här konverteraren tolkar CSV-fält, mappar rubriker till nycklar och genererar korrekt indenterad och citerad YAML-utmatning.
⚡
Konvertera direkt i webbläsaren
Klistra in eller ladda upp CSV-data och få giltig YAML-utmatning omedelbart. Inga CLI-verktyg att installera, inga bibliotek att importera, inget byggsteg krävs.
🔒
Håll dina data privata
All tolkning och konvertering sker lokalt i din webbläsare med JavaScript. Dina CSV-data lämnar aldrig din dator, skickas aldrig till en server och lagras eller loggas aldrig.
🎯
Producera korrekt formaterad YAML
Utmatningen använder korrekt indentering, citerar strängar som annars skulle feltolkas som booleaner eller tal, och genererar giltig YAML 1.2 som godkänns av alla linters och schemavaliderare.
📋
Hantera alla CSV-dialekter
Identifierar automatiskt kommatecken, semikolon, tabbar och pipe-tecken som avgränsare. Stöder RFC 4180:s citeringsregler inklusive undkomna dubbla citattecken, flerradsfält och BOM-prefixade UTF-8-filer.
Användningsfall för CSV till YAML
Kubernetes och Docker Compose-konfiguration
Generera miljövariabelblock, ConfigMap-datasektioner eller Docker Compose-tjänstedefinitioner från ett kalkylblad med konfigurationsvärden. Klistra in YAML-utmatningen direkt i dina manifestfiler.
Ansible-playbookdata
Konvertera en CSV-inventering av värdar, roller och variabler till YAML-formaterade variabelfiler (group_vars, host_vars) som Ansible läser direkt utan anpassade tolkningsplugins.
CI/CD-pipelinekonfiguration
Omvandla ett kalkylblad med byggmatrispost, miljövariabler eller driftsättningsmål till YAML-konfigurationsblock för GitHub Actions, GitLab CI eller CircleCI. Undviker manuell inmatning av repetitiva matrisdefinitioner.
Startdatafixtures för databaser
Rails, Django och andra ramverk använder YAML för testfixtures och startdata. Konvertera en CSV-databasexport till en YAML-fixturefil som ORM:en kan läsa in direkt i testdatabasen.
Datapipelineomvandling
ETL-pipelines som accepterar YAML-inmatningar kan ta emot konverterad CSV-data utan ett mellanliggande JSON-steg. Verktyg som dbt, Dagster och Prefect använder YAML för pipelinedefinitioner och konfiguration.
Lära sig YAML-syntax
Studenter och utvecklare som är nya till YAML kan klistra in välbekant CSV-data och se hur tabulära rader översätts till sekvenser och mappningar. Att jämföra in- och utmatning tydliggör indenteringsregler, nyckel-värdessyntax och typhantering.
Referens för CSV till YAML-mappning
Varje strukturellt element i en CSV-fil har en direkt motsvarighet i YAML.
CSV-koncept
YAML-motsvarighet
Detaljer
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 jämfört med YAML
CSV är ett platt, avgränsarseparerat format utan typinformation eller hierarki. YAML är en supermängd av JSON som använder indentering för nästling, stöder flera datatyper och tillåter kommentarer. Valet beror på vad ditt efterföljande verktyg förväntar sig.
CSV
Klartext, en post per rad. Alla värden är strängar. Ingen hierarki, nästling eller kommentarer. Minimal filstorlek. Stöds universellt av kalkylblad, databaser och kommandoradsverktyg. Definieras av RFC 4180. Bäst för bulköverföring av tabulärdata mellan system som är överens om kolumnordning och typer.
YAML
Indenteringsbaserat format med inbyggt stöd för strängar, heltal, decimaltal, booleaner, null, datum, sekvenser (arrayer) och mappningar (objekt). Tillåter inline-kommentarer med #. Används som primärt konfigurationsformat för Kubernetes, Docker Compose, Ansible, GitHub Actions och de flesta moderna DevOps-verktyg. YAML 1.2 är en supermängd av JSON, så all giltig JSON är också giltig YAML.
Kodexempel
Fungerande exempel i Node.js, Python, Go och CLI-verktyg. Varje exempel läser CSV-rubrikraden som YAML-nycklar, mappar varje datarad till en sekvensposts och hanterar citering av typambiguösa värden.
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
Vanliga frågor
Hur fungerar CSV till YAML-konvertering?
Konverteraren läser den första raden som kolumnrubriker. Varje efterföljande rad blir en YAML-mappning (nyckel-värdeobjekt), och alla mappningar samlas i en YAML-sekvens (array). Resultatet är en lista av objekt där varje nyckel kommer från rubriken och varje värde från cellinnehållet.
Vad händer med värden som "true", "yes" eller "null" i min CSV?
YAML-tolkare tolkar bara true, false, yes, no och null som typade värden snarare än strängar. Konverteraren citerar dessa värden så att de förblir strängar i utmatningen. Till exempel blir en CSV-cell som innehåller "yes" till '"yes"' i YAML-utmatningen, vilket förhindrar att ditt konfigurationsverktyg tolkar det som ett booleskt värde.
Kan jag konvertera YAML tillbaka till CSV?
Ja, förutsatt att YAML:en är en platt sekvens av mappningar (array av objekt med skalära värden). Nästlade YAML-strukturer med djupt nästlade mappningar eller blandade typer kan inte representeras renligt som CSV-rader. För platta strukturer hanterar verktyg som yq, Miller (mlr) eller Pythons yaml- och csv-moduler omvänd konvertering.
Vad är skillnaden mellan CSV till YAML och CSV till JSON?
Båda producerar strukturerad data från platt CSV-inmatning. JSON använder klammerparenteser och hakparenteser med strikta citeringsregler. YAML använder indentering och kolon, stöder kommentarer och är lättare att läsa och redigera för hand. De flesta DevOps-verktyg (Kubernetes, Ansible, Docker Compose) förväntar sig YAML. De flesta webb-API:er och JavaScript-baserade verktyg förväntar sig JSON.
Hur hanteras tal och datum i utmatningen?
CSV behandlar alla värden som strängar. YAML-tolkare detekterar automatiskt ociterade tal (42, 3.14) och ISO-datum (2024-01-15) som deras respektive typer. Om du behöver att alla värden förblir strängar kan konverteraren citera alla värden. Om du vill ha typinferens, lämna värden ociterade och låt YAML-tolkaren hantera typupplösning.
Hanterar konverteraren stora CSV-filer?
Verktyget körs helt i din webbläsare, så prestandan beror på tillgängligt minne och webbläsarflikens begränsningar. Filer upp till ett par megabyte (tiotusentals rader) konverteras utan problem på modern hårdvara. För mycket stora filer (100 MB+), använd ett CLI-verktyg som Pythons csv- och yaml-moduler, Gos encoding/csv med gopkg.in/yaml.v3, eller Miller (mlr), som kan strömma data utan att läsa in allt i minnet.
Produceras YAML 1.1 eller YAML 1.2-utmatning?
Det här verktyget producerar YAML 1.2-utmatning. Den viktigaste skillnaden från YAML 1.1 är att 1.2 tog bort "Norge-problemet" (bare 'no' tolkades som booleskt falskt) och anpassade JSON-kompatibiliteten. De flesta moderna tolkare (Go yaml.v3, Python PyYAML med safe_load, Ruby Psych) stöder YAML 1.2. Om ditt verktyg kräver 1.1-kompatibilitet kommer utmatningen ändå att tolkas korrekt i nästan alla fall, eftersom 1.2 är bakåtkompatibel för vanliga strukturer.