CSV Tablosu (.csv)

RFC Standart

Comma-Separated Values (CSV), her satırın bir veri kaydını temsil ettiği ve alanların sınırlayıcı karakterlerle ayrıldığı, tablo verileri için yaygın bir düz metin formatıdır.

XLSX biçimini CSV biçimine dönüştür

Tarayıcında XLSX biçimini CSV biçimine ücretsiz dönüştür. Dosyaları cihazında anında dönüştür.

CSV dosyasını çevrimiçi sıkıştır

Özel - dosyalar cihazınızdan asla ayrılmaz

İncele ve Meta Veriler

İşletim sistemleri ve dosya çözümleyicileri, CSV dosyalarını başlangıçtaki ikili sihirli bayt dizisini inceleyerek tanımlar:

Dosyaları buraya seç veya bırak

Özel - dosyalar cihazınızdan asla ayrılmaz

veya yapıştır Ctrl+V
Sıfır Ağ Aktarımı Gizlilik Garantisi: Harici sunuculara 0 bayt yüklendi. Tüm işlemler tarayıcındaki korumalı alanda (sandbox) yerel olarak gerçekleştirildi.

Bayt düzeyinde başlık imzası (sihirli baytlar)

İşletim sistemleri ve dosya çözümleyicileri, CSV dosyalarını başlangıçtaki ikili sihirli bayt dizisini inceleyerek tanımlar:

HEX İMZASI (OFSET 0):

Sabit imza yok

ASCII GÖSTERİMİ: Metin baytları; kodlama değişebilir

Standartlaştırma: RFC 4180 / IETF

Teknik Özellikler

Kapsayıcı mimarisiTablo veri satırlarını ve sütunlarını temsil eden sınırlayıcılı düz metin dosyası
SıkıştırmaGzip / Deflate, tekrarlayan tablo kayıtlarında %85-%95 sıkıştırma sağlar
Bayt Düzeni (Endianness)UTF-8 metin akışı (Excel tarafından kullanılan isteğe bağlı UTF-8 BOM EF BB BF baytları)
Renk UzaylarıGeçerli değil
Kanallar ve YapıVirgüllerle ayrılmış sütunlar ve CRLF ile ayrılmış satır kayıtları
Maksimum BoyutlarSınırsız; tüm dosyayı belleğe yüklemeden gigabaytlarca veri akışı sağlanabilir
ŞeffaflıkGeçerli değil
Akış ve Aşamalı İşlemeTüm veri hatları tarafından desteklenen yerel satır satır akış işleme desteği

Teknik karşılaştırma matrisi: CSV ve rakipleri

Teknik NitelikCSV (Güncel)Excel (XLSX)ParquetJSON
Dosya TürüDüz metin tabloSıkıştırılmış XML elektronik tablosuİkili sütunlu depolamaHiyerarşik metin
Çoklu SayfalarYok (yalnızca tek düz tablo)Evet (birden fazla çalışma kitabı ve sayfa)Bölüm tabanlı depolamaİç içe diziler ve nesneler
Veri TürleriTürü belirtilmemiş ham metinTemel veri türleri, formüller ve biçimlendirme içeren hücrelerKatı ikili sütun türleriTemel türler (dize, sayı, mantıksal değer)
Büyük Veri AnalitiğiYavaş (her satırın doğrusal olarak okunmasını gerektirir)Büyük veri için uygun değilSon derece hızlı (sütun budama ve koşul itme)Orta

Yaygın Bozulma Modları ve Hex Kurtarma Kılavuzu

Sütunlar sağa kayıyor veya satır sayıları eşleşmiyor.

Kök Neden: Çevresinde çift tırnak işaretleri bulunmayan, kaçış karakteri kullanılmamış bir virgül içeren metin alanı.

Kurtarma: RFC 4180'e göre virgül içeren alanlar çift tırnak içine alınmalıdır: "Smith, John".

Aksanlı karakterler Excel'de garip semboller olarak görünür (é yerine é gibi karakter bozulması).

Kök Neden: Excel, eski Windows ANSI/CP1252 karakter kodlamasını varsayarak bir UTF-8 CSV dosyasını açtı.

Kurtarma: Dosyanın başına 3 baytlık UTF-8 Bayt Sırası İşareti'ni (0xEF 0xBB 0xBF) ekle.

Güvenlik Analizi ve Ayrıştırıcı Saldırı Vektörleri

CSV dosyaları Excel ve Google Sheets gibi elektronik tablo yazılımlarında doğrudan açılır ve kullanıcıları Formül Enjeksiyonu (CSV Enjeksiyonu) saldırılarına maruz bırakır.

Bilinen Saldırı Vektörleri

  • Formül Enjeksiyonu: '=', '+', '-' veya '@' ile başlayan hücreler elektronik tablo makrolarını veya DDE komutlarını yürütür (örn. '=cmd|' /C calc'!A0').
  • Tıklandığında hassas hücre verilerini uzak saldırgan sunucularına gönderen HYPERLINK() formülleri aracılığıyla veri sızdırma.

Savunmaya yönelik en iyi uygulamalar: Kullanıcı verilerini CSV'ye aktarırken, Excel'in hücreyi düz metin olarak işlemesi için '=', '+', '-', '@' ile başlayan hücrelerin başına tek tırnak (') veya sekme koy.

Tarihsel kökenler ve önemli dönüm noktaları

2015W3C'nin Web Üzerinde Tablolu Veri ve Meta Veri Modeli, CSVW'yi JSON-LD meta veri tanımlayıcılarıyla standartlaştırır.
2005IETF, CSV dosyaları için resmi spesifikasyonu belirleyen RFC 4180'i yayınlar.
1972IBM Fortran (H Extended) derleyicisi, virgülle ayrılmış girdi/çıktıyı uygular.

Temel Avantajlar ve Artılar

  • Son derece basit: Herhangi bir metin düzenleyicide okunabilir ve her veritabanına ya da elektronik tabloya aktarılabilir.
  • Tam bir bellek içi DOM oluşturmadan son derece hızlı satır satır akış.
  • Minimum ek yük: Ayrıntılı etiket sözdizimi veya şema tanımı yoktur.

Teknik Kısıtlamalar ve Eksiler

  • Standart veri türleri yok: Sayılar, tarihler, mantıksal değerler ve metinlerin tümü ham dize olarak saklanır.
  • Birden fazla sayfa, hücre biçimlendirme, formül veya meta veri desteği yoktur.
  • Sınırlayıcı çakışmaları (metin içindeki virgüller, Avrupa yerel ayarlarındaki ondalık virgüller) sık sık ayrıştırma hatalarına neden olur.

İlginç Teknik Bilgiler

  • Virgüllerin ondalık nokta olarak kullanıldığı birçok Avrupa ülkesinde, CSV ayırıcısı olarak virgül yerine noktalı virgül (;) kullanılır.
  • Microsoft Excel, ASCII dışı aksanlı karakterleri doğru şekilde görüntülemek için tarihsel olarak bir UTF-8 BOM (0xEF 0xBB 0xBF) gerektiriyordu.
  • İngiltere Ulusal Sağlık Servisi (NHS), verilerin satır sayısını 65.536 ile sınırlayan eski bir Excel biçimine aktarılması nedeniyle 2020'de yaklaşık 16.000 COVID-19 temas izleme kaydını kaybetti.

Sıkça Sorulan Teknik Sorular

RFC 4180 nedir?

RFC 4180, CSV için resmi IETF standardıdır. Virgül, satır sonu veya çift tırnak içeren alanların çift tırnak içine alınmasını ve alan içindeki çift tırnakların ikilenerek kaçırılmasını ("") zorunlu kılar.

CSV dosyaları neden Excel'de bozuk karakterlerle açılıyor?

Microsoft Excel'in eski sürümleri, CSV dosyalarını doğrudan açarken UTF-8 yerine yerel Windows kod sayfasını (Windows-1252 gibi) varsayılan olarak kullanır. Dosyanın başlangıcına bir UTF-8 BOM (Bayt Sırası İşareti) eklemek, Excel'in UTF-8'i doğru şekilde kod çözmesini sağlar.

CSV Enjeksiyonu (Formül Enjeksiyonu) nedir?

CSV Enjeksiyonu, önde gelen formül tetikleyicileri ('=', '+', '-', '@') içeren güvenilmeyen kullanıcı girdisi bir elektronik tablo dosyasına aktarıldığında gerçekleşir. Excel gibi yazılımlarda açıldığında, elektronik tablo formülü veya dinamik veri alışverişi (DDE) komutunu otomatik olarak yürütür, potansiyel olarak sistem komutlarını çalıştırır veya veri sızdırır.