La conversion CSV vers YAML transforme des données tabulaires séparées par des virgules au format YAML (YAML Ain't Markup Language). Chaque ligne du fichier CSV devient une entrée dans une séquence YAML, et chaque en-tête de colonne correspond à une clé dans un mapping YAML. Le résultat est un document lisible par l'humain, basé sur l'indentation, que les outils de configuration et les pipelines de données peuvent analyser directement sans fichiers de schéma supplémentaires.
YAML a été proposé pour la première fois en 2001 et a atteint sa spécification actuelle (YAML 1.2) en 2009. C'est le format de configuration par défaut pour les manifests Kubernetes, les fichiers Docker Compose, les playbooks Ansible, les workflows GitHub Actions et la plupart des systèmes CI/CD. Lorsque vos données sources se trouvent dans un tableur ou un export de base de données, la conversion CSV vers YAML est le moyen le plus rapide de générer des entrées de configuration, des fixtures de données ou des entrées de test pour ces systèmes.
Un convertisseur CSV vers YAML correct doit gérer les règles de parsing de la RFC 4180 : les champs entre guillemets contenant des virgules ou des sauts de ligne, les guillemets doubles échappés et les délimiteurs variables. Côté YAML, les chaînes qui ressemblent à des booléens (yes, no, true, false), des nombres ou null doivent être mises entre guillemets pour éviter que les parseurs YAML les convertissent en types non voulus. Le convertisseur doit également gérer le contenu Unicode et produire une sortie UTF-8 valide, car YAML 1.2 exige UTF-8 comme encodage par défaut.
Pourquoi utiliser un convertisseur CSV vers YAML ?
Écrire du YAML à la main à partir de données de tableur est fastidieux et source d'erreurs. Une indentation mal placée ou un caractère spécial non entouré de guillemets produit du YAML invalide qui bloque les déploiements de configuration ou les imports de données. Ce convertisseur analyse les champs CSV, mappe les en-têtes sur des clés et génère une sortie YAML correctement indentée et entre guillemets.
⚡
Conversion instantanée dans votre navigateur
Collez ou chargez vos données CSV pour obtenir une sortie YAML valide immédiatement. Aucun outil CLI à installer, aucune bibliothèque à importer, aucune étape de compilation requise.
🔒
Vos données restent privées
Tout le parsing et la conversion s'effectuent localement dans votre navigateur en JavaScript. Vos données CSV ne quittent jamais votre machine, ne sont jamais envoyées à un serveur, et ne sont jamais stockées ni journalisées.
🎯
Sortie YAML correctement formatée
La sortie utilise une indentation correcte, met entre guillemets les chaînes qui seraient autrement interprétées comme des booléens ou des nombres, et génère du YAML 1.2 valide qui passe n'importe quel linter ou validateur de schéma.
📋
Gère tous les dialectes CSV
Détecte automatiquement les virgules, points-virgules, tabulations et pipes comme délimiteurs. Prend en charge les règles de guillemets de la RFC 4180, y compris les guillemets doubles échappés, les champs multilignes et les fichiers UTF-8 préfixés par un BOM.
Cas d'utilisation CSV vers YAML
Configuration Kubernetes et Docker Compose
Générez des blocs de variables d'environnement, des sections de données ConfigMap ou des définitions de services Docker Compose à partir d'un tableur de valeurs de configuration. Collez directement la sortie YAML dans vos fichiers manifest.
Données de playbook Ansible
Convertissez un inventaire CSV d'hôtes, de rôles et de variables en fichiers de variables au format YAML (group_vars, host_vars) qu'Ansible lit nativement sans plugins de parsing personnalisés.
Configuration de pipeline CI/CD
Transformez un tableur d'entrées de matrice de build, de variables d'environnement ou de cibles de déploiement en blocs de configuration YAML pour GitHub Actions, GitLab CI ou CircleCI. Évite la saisie manuelle de définitions de matrice répétitives.
Fixtures de données de test
Rails, Django et d'autres frameworks utilisent YAML pour les fixtures de test et les données de démarrage. Convertissez un export CSV de base de données en fichier de fixtures YAML que l'ORM peut charger directement dans la base de données de test.
Transformation de pipeline de données
Les pipelines ETL qui acceptent des entrées YAML peuvent ingérer des données CSV converties sans étape JSON intermédiaire. Des outils comme dbt, Dagster et Prefect utilisent YAML pour les définitions de pipeline et la configuration.
Apprentissage de la syntaxe YAML
Les étudiants et développeurs qui découvrent YAML peuvent coller des données CSV familières et voir comment les lignes tabulaires se traduisent en séquences et en mappings. La comparaison des entrées et sorties clarifie les règles d'indentation, la syntaxe clé-valeur et la gestion des types.
Référence de mapping CSV vers YAML
Chaque élément structurel d'un fichier CSV a un équivalent direct en YAML.
Concept CSV
Équivalent YAML
Détails
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 est un format plat séparé par des délimiteurs sans information de type ni hiérarchie. YAML est un sur-ensemble de JSON qui utilise l'indentation pour l'imbrication, prend en charge plusieurs types de données et autorise les commentaires. Le choix dépend de ce qu'attend votre outil en aval.
CSV
Texte brut, un enregistrement par ligne. Chaque valeur est une chaîne. Pas de hiérarchie, d'imbrication ni de commentaires. Taille de fichier minimale. Universellement pris en charge par les tableurs, les bases de données et les outils en ligne de commande. Défini par la RFC 4180. Idéal pour le transfert en masse de données tabulaires entre systèmes qui s'accordent sur l'ordre et les types des colonnes.
YAML
Format basé sur l'indentation avec prise en charge native des chaînes, entiers, flottants, booléens, null, dates, séquences (tableaux) et mappings (objets). Autorise les commentaires en ligne avec #. Utilisé comme format de configuration principal pour Kubernetes, Docker Compose, Ansible, GitHub Actions et la plupart des outils DevOps modernes. YAML 1.2 est un sur-ensemble de JSON, donc tout JSON valide est aussi du YAML valide.
Exemples de code
Exemples fonctionnels en Node.js, Python, Go et outils CLI. Chacun lit la ligne d'en-tête CSV comme clés YAML, mappe chaque ligne de données sur une entrée de séquence et gère les guillemets pour les valeurs ambiguës du point de vue du type.
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
Questions fréquentes
Comment fonctionne la conversion CSV vers YAML ?
Le convertisseur lit la première ligne comme en-têtes de colonnes. Chaque ligne suivante devient un mapping YAML (objet clé-valeur), et tous les mappings sont rassemblés dans une séquence YAML (tableau). Le résultat est une liste d'objets où chaque clé vient de l'en-tête et chaque valeur vient du contenu de la cellule.
Que se passe-t-il avec les valeurs comme « true », « yes » ou « null » dans mon CSV ?
Les parseurs YAML interprètent les valeurs brutes true, false, yes, no et null comme des valeurs typées plutôt que comme des chaînes. Le convertisseur met ces valeurs entre guillemets pour qu'elles restent des chaînes dans la sortie. Par exemple, une cellule CSV contenant « yes » devient '"yes"' dans la sortie YAML, empêchant votre outil de configuration de l'interpréter comme un booléen.
Puis-je reconvertir du YAML en CSV ?
Oui, à condition que le YAML soit une séquence plate de mappings (tableau d'objets avec des valeurs scalaires). Les structures YAML imbriquées avec des maps profondément imbriqués ou des types mixtes ne peuvent pas être représentées proprement sous forme de lignes CSV. Pour les structures plates, des outils comme yq, Miller (mlr) ou les modules yaml et csv de Python gèrent la conversion inverse.
Quelle est la différence entre CSV vers YAML et CSV vers JSON ?
Les deux produisent des données structurées à partir d'une entrée CSV plate. JSON utilise des accolades et des crochets avec des règles de guillemets strictes. YAML utilise l'indentation et les deux-points, prend en charge les commentaires et est plus facile à lire et modifier à la main. La plupart des outils DevOps (Kubernetes, Ansible, Docker Compose) attendent du YAML. La plupart des API web et des outils basés sur JavaScript attendent du JSON.
Comment les nombres et les dates sont-ils gérés dans la sortie ?
CSV traite chaque valeur comme une chaîne. Les parseurs YAML détectent automatiquement les nombres non entre guillemets (42, 3.14) et les dates ISO (2024-01-15) comme leurs types respectifs. Si vous avez besoin que toutes les valeurs restent des chaînes, le convertisseur peut mettre chaque valeur entre guillemets. Si vous souhaitez une inférence de type, laissez les valeurs sans guillemets et laissez le parseur YAML gérer la résolution des types.
Le convertisseur gère-t-il les grands fichiers CSV ?
L'outil s'exécute entièrement dans votre navigateur, donc les performances dépendent de la mémoire disponible et des limites de l'onglet du navigateur. Les fichiers jusqu'à quelques mégaoctets (des dizaines de milliers de lignes) se convertissent sans problème sur du matériel récent. Pour les très grands fichiers (100 Mo et plus), utilisez un outil CLI comme les modules csv et yaml de Python, Go avec encoding/csv et gopkg.in/yaml.v3, ou Miller (mlr), qui peut traiter les données en flux sans tout charger en mémoire.
La sortie est-elle en YAML 1.1 ou YAML 1.2 ?
Cet outil produit une sortie YAML 1.2. La principale différence avec YAML 1.1 est que la version 1.2 a supprimé le « problème de la Norvège » (le mot 'no' interprété comme booléen false) et aligné sa compatibilité JSON. La plupart des parseurs modernes (Go yaml.v3, Python PyYAML avec safe_load, Ruby Psych) prennent en charge YAML 1.2. Si votre outil nécessite la compatibilité 1.1, la sortie sera quand même analysée correctement dans presque tous les cas, car YAML 1.2 est rétrocompatible pour les structures courantes.