ToolDeck

CSV'den YAML'a Dönüştürücü

CSV verisini YAML nesne dizisine dönüştür

Örnek dene

CSV Girdi

YAML Çıktı

Yerel olarak çalışır · Gizli bilgi yapıştırmak güvenlidir
YAML çıktısı burada görünecek…

CSV'den YAML'a Dönüşüm Nedir?

CSV'den YAML'a dönüşüm, virgülle ayrılmış tablo verilerini YAML (YAML Ain't Markup Language) biçimine dönüştürür. CSV dosyasının her satırı bir YAML dizisinde bir girişe, her sütun başlığı ise bir YAML eşlemesinde bir anahtara dönüşür. Sonuç; yapılandırma araçlarının ve veri hatlarının ek şema dosyalarına gerek kalmadan doğrudan ayrıştırabileceği, girintilemeye dayalı ve insan tarafından okunabilir bir belgedir.

YAML ilk olarak 2001'de önerildi ve güncel belirtimi (YAML 1.2) 2009'da yayımlandı. Kubernetes manifest dosyaları, Docker Compose yapılandırmaları, Ansible playbook'ları, GitHub Actions iş akışları ve pek çok CI/CD sistemi için varsayılan yapılandırma biçimidir. Kaynak verileriniz bir elektronik tabloda veya veritabanı dışa aktarımındaysa, CSV'yi YAML'a dönüştürmek; bu sistemler için yapılandırma girdileri, seed veri sabitleri veya test girdileri oluşturmanın en hızlı yoludur.

Doğru bir CSV'den YAML'a dönüştürücü, RFC 4180 ayrıştırma kurallarını ele almalıdır: virgül veya satır sonu içeren tırnaklı alanlar, kaçırılmış çift tırnaklar ve değişen ayırıcılar. YAML tarafında ise boolean'a benzeyen (yes, no, true, false), sayıya veya null'a benzeyen dizeler, YAML ayrıştırıcılarının bunları istenmeyen türlere dönüştürmesini önlemek için tırnak içine alınmalıdır. Dönüştürücü ayrıca Unicode içeriği işlemeli ve geçerli UTF-8 çıktı üretmelidir; çünkü YAML 1.2, varsayılan kodlama olarak UTF-8'i gerektirir.

Neden CSV'den YAML'a Dönüştürücü Kullanmalısınız?

Elektronik tablo verilerinden YAML'ı elle yazmak sıkıcı ve hataya açıktır. Yanlış yerleştirilmiş bir girinti veya tırnak içine alınmamış özel bir karakter, yapılandırma dağıtımlarını veya veri içe aktarımlarını bozan geçersiz YAML üretir. Bu dönüştürücü, CSV alanlarını ayrıştırır, başlıkları anahtarlara eşler ve düzgün girintilenmiş, doğru tırnaklı YAML çıktısı üretir.

Tarayıcınızda anında dönüştürün
CSV verilerini yapıştırın veya yükleyin, hemen geçerli YAML çıktısı alın. Kurulacak komut satırı aracı, içe aktarılacak kütüphane veya derleme adımı yoktur.
🔒
Verilerinizi gizli tutun
Tüm ayrıştırma ve dönüşüm, JavaScript kullanılarak tarayıcınızda yerel olarak çalışır. CSV verileriniz hiçbir zaman makinenizden çıkmaz, bir sunucuya gönderilmez ve hiçbir yerde saklanmaz ya da günlüğe kaydedilmez.
🎯
Doğru biçimlendirilmiş YAML üretin
Çıktı; uygun girintileme kullanır, boolean veya sayı olarak yanlış yorumlanabilecek dizeleri tırnak içine alır ve herhangi bir linter ya da şema doğrulayıcıdan geçen geçerli YAML 1.2 üretir.
📋
Her CSV biçimini destekler
Virgül, noktalı virgül, sekme ve pipe karakterlerini ayırıcı olarak otomatik algılar. Kaçırılmış çift tırnaklar, çok satırlı alanlar ve BOM önekli UTF-8 dosyaları dahil RFC 4180 tırnaklama kurallarını destekler.

CSV'den YAML'a Kullanım Senaryoları

Kubernetes ve Docker Compose yapılandırması
Bir yapılandırma değerleri elektronik tablosundan ortam değişkeni blokları, ConfigMap veri bölümleri veya Docker Compose servis tanımları oluşturun. YAML çıktısını doğrudan manifest dosyalarınıza yapıştırın.
Ansible playbook verisi
Bir CSV host, rol ve değişken envanterini, Ansible'ın herhangi bir özel ayrıştırma eklentisi olmadan doğrudan okuduğu YAML biçimli değişken dosyalarına (group_vars, host_vars) dönüştürün.
CI/CD hattı yapılandırması
Derleme matrisi girdileri, ortam değişkenleri veya dağıtım hedefleri içeren bir elektronik tabloyu GitHub Actions, GitLab CI veya CircleCI YAML yapılandırma bloklarına dönüştürün. Tekrarlayan matris tanımlarının elle yazılmasını önler.
Veritabanı seed sabitleri
Rails, Django ve diğer çerçeveler, test sabitleri ve seed verileri için YAML kullanır. Bir CSV veritabanı dışa aktarımını, ORM'nin doğrudan test veritabanına yükleyebileceği bir YAML sabit dosyasına dönüştürün.
Veri hattı dönüşümü
YAML girdisi kabul eden ETL hatları, ara bir JSON adımına gerek kalmadan dönüştürülmüş CSV verilerini alabilir. dbt, Dagster ve Prefect gibi araçlar, hattın tanımları ve yapılandırması için YAML kullanır.
YAML sözdizimini öğrenme
YAML'a yeni başlayan öğrenciler ve geliştiriciler, tanıdık CSV verilerini yapıştırarak tablo satırlarının dizilere ve eşlemelere nasıl dönüştüğünü görebilir. Girdi ile çıktıyı karşılaştırmak, girintileme kurallarını, anahtar-değer sözdizimini ve tür işlemeyi somutlaştırır.

CSV'den YAML'a Eşleme Başvurusu

Bir CSV dosyasının her yapısal öğesinin YAML'da doğrudan bir karşılığı vardır.

CSV KavramıYAML KarşılığıAyrıntılar
CSV fileYAML documentThe entire file becomes a YAML sequence (array) of mappings
Header rowMapping keysEach column header becomes a key in every mapping entry
Data rowSequence item (- ...)Each row becomes one mapping item in the top-level array
Cell valueScalar valueStrings, numbers, and booleans are inferred by YAML parsers
Empty cellnull or empty stringRendered as null, ~, or an empty value depending on the tool
Comma delimiterIndentation + colonCSV delimiters are replaced by YAML key: value structure

CSV ve YAML Karşılaştırması

CSV, tür bilgisi veya hiyerarşi içermeyen düz, ayırıcı tabanlı bir biçimdir. YAML ise iç içe yapı için girintileme kullanan, birden fazla veri türünü destekleyen ve yorumlara izin veren bir JSON üst kümesidir. Seçim, aşağı akış aracınızın neyi beklediğine bağlıdır.

CSV
Düz metin, satır başına bir kayıt. Her değer dizedir. Hiyerarşi, iç içe yapı veya yorum yoktur. Minimum dosya boyutu. Elektronik tablolar, veritabanları ve komut satırı araçları tarafından evrensel olarak desteklenir. RFC 4180 ile tanımlanmıştır. Sütun düzeni ve türler konusunda anlaşan sistemler arasında toplu tablo veri aktarımı için idealdir.
YAML
Dizeler, tamsayılar, ondalıklı sayılar, boolean, null, tarihler, diziler ve eşlemeler (nesneler) için yerel destek sunan girintilemeye dayalı biçim. # ile satır içi yorumlara izin verir. Kubernetes, Docker Compose, Ansible, GitHub Actions ve modern DevOps araçlarının büyük çoğunluğu için birincil yapılandırma biçimi olarak kullanılır. YAML 1.2, JSON'ın bir üst kümesidir; dolayısıyla geçerli her JSON aynı zamanda geçerli YAML'dır.

Kod Örnekleri

Node.js, Python, Go ve komut satırı araçlarında çalışan örnekler. Her örnek, CSV başlık satırını YAML anahtarları olarak okur, her veri satırını bir dizi girişine eşler ve türe belirsiz değerler için tırnaklama işlemini gerçekleştirir.

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

Sıkça Sorulan Sorular

CSV'den YAML'a dönüşüm nasıl çalışır?
Dönüştürücü, ilk satırı sütun başlıkları olarak okur. Sonraki her satır bir YAML eşlemesine (anahtar-değer nesnesi) dönüşür ve tüm eşlemeler bir YAML dizisine (dizi) toplanır. Sonuç, her anahtarın başlıktan, her değerin ise hücre içeriğinden geldiği nesneler listesidir.
CSV'deki "true", "yes" veya "null" gibi değerlere ne olur?
YAML ayrıştırıcıları, true, false, yes, no ve null gibi çıplak değerleri dize yerine türlendirilmiş değerler olarak yorumlar. Dönüştürücü bu değerleri tırnak içine alarak çıktıda dize olarak kalmasını sağlar. Örneğin, "yes" içeren bir CSV hücresi YAML çıktısında '"yes"' olur ve yapılandırma aracınızın bunu boolean olarak yorumlaması önlenir.
YAML'ı tekrar CSV'ye dönüştürebilir miyim?
Evet, YAML düz bir eşlemeler dizisiyse (skaler değerlerden oluşan nesneler dizisi). Derin iç içe haritalar veya karışık türler içeren YAML yapıları, CSV satırları olarak temiz biçimde temsil edilemez. Düz yapılar için yq, Miller (mlr) ya da Python'ın yaml ve csv modülleri ters dönüşümü gerçekleştirebilir.
CSV'den YAML'a ve CSV'den JSON'a dönüşüm arasındaki fark nedir?
Her ikisi de düz CSV girdisinden yapılandırılmış veri üretir. JSON, katı tırnaklama kurallarıyla süslü ve köşeli parantezler kullanır. YAML, girintileme ve iki nokta üst üste kullanır, yorumları destekler ve elle okunup düzenlenmesi daha kolaydır. Kubernetes, Ansible ve Docker Compose gibi DevOps araçlarının çoğu YAML bekler. Web API'lerinin ve JavaScript tabanlı araçların büyük çoğunluğu ise JSON bekler.
Çıktıda sayılar ve tarihler nasıl işlenir?
CSV her değeri dize olarak ele alır. YAML ayrıştırıcıları, tırnak içine alınmamış sayıları (42, 3.14) ve ISO tarihlerini (2024-01-15) ilgili türler olarak otomatik algılar. Tüm değerlerin dize olarak kalmasını istiyorsanız dönüştürücü her değeri tırnak içine alabilir. Tür çıkarımı istiyorsanız değerleri tırnaksız bırakın ve YAML ayrıştırıcısının tür çözümlemesini yapmasına izin verin.
Dönüştürücü büyük CSV dosyalarını işleyebilir mi?
Araç tamamen tarayıcınızda çalıştığından performans, kullanılabilir belleğe ve tarayıcı sekmesi sınırlarına bağlıdır. Birkaç megabayta kadar olan dosyalar (on binlerce satır) modern donanımda sorunsuz dönüşür. Çok büyük dosyalar (100 MB+) için Python'ın csv ve yaml modüllerini, Go'nun encoding/csv ve gopkg.in/yaml.v3 paketlerini veya her şeyi belleğe yüklemeden veriyi akış olarak işleyebilen Miller (mlr) aracını kullanın.
Üretilen çıktı YAML 1.1 mi yoksa YAML 1.2 mi?
Bu araç YAML 1.2 çıktısı üretir. YAML 1.1'den temel fark, 1.2'nin "Norveç sorunu"nu kaldırmasıdır (çıplak 'no' değerinin boolean false olarak yorumlanması) ve JSON uyumluluğunu hizalamasıdır. Modern ayrıştırıcıların büyük çoğunluğu (Go yaml.v3, safe_load kullanan Python PyYAML, Ruby Psych) YAML 1.2'yi destekler. Aracınız 1.1 uyumluluğu gerektiriyorsa çıktı, 1.2'nin yaygın yapılar için geriye dönük uyumlu olması nedeniyle neredeyse her durumda doğru biçimde ayrıştırılacaktır.