CSV tabela (.csv)

RFC Standard

Comma-Separated Values (CSV) je sveprisutni format običnog teksta za tabelarne podatke, gde svaki red predstavlja zapis, a polja su odvojena znakovima za razdvajanje.

Konvertujte XLSX u CSV

Besplatan konvertor XLSX u CSV u pregledaču. Konvertujte datoteke odmah na svom uređaju.

Kompresujte CSV na mreži

Privatno - datoteke nikada ne napuštaju vaš uređaj

Pregled i metapodaci

Operativni sistemi i analizatori datoteka identifikuju CSV datoteke proverom početnog binarnog niza bajtova:

Izaberite ili prevucite datoteke ovde

Privatno - datoteke nikada ne napuštaju vaš uređaj

ili nalepite Ctrl+V
Garancija privatnosti: bez prenosa podataka preko mreže 0 bajtova poslato spoljnim serverima. Sva obrada je izvršena lokalno u bezbednom okruženju vašeg pregledača.

Potpis zaglavlja na nivou bajtova (magični bajtovi)

Operativni sistemi i analizatori datoteka identifikuju CSV datoteke proverom početnog binarnog niza bajtova:

HEKSADECIMALNI POTPIS (OFFSET 0):

Nema fiksnog potpisa

ASCII REPREZENTACIJA: Tekstualni bajtovi; kodiranje može da varira

Standardizacija: RFC 4180 / IETF

Tehničke specifikacije

Arhitektura kontejneraTekstualna datoteka sa graničnicima koja predstavlja tabelarne redove i kolone sa podacima
KompresijaGzip i Deflate mogu da komprimuju tekstualne podatke; veličina rezultata zavisi od podataka i podešavanja.
Bajtni redosled (Endianness)UTF-8 tekstualni tok (opcioni UTF-8 BOM EF BB BF koji koristi Excel)
Prostori bojaNije primenjivo
Kanali i strukturaRedovi zapisa razdvojeni sa CRLF, a kolone razdvojene zarezima
Maksimalne dimenzijeNeograničeno; može se strimovati do gigabajta bez učitavanja celog fajla u memoriju
TransparentnostNije primenjivo
Strimovanje i progresivno učitavanjeIzvorna obrada toka red po red podržana u svim cevovodima za obradu podataka

Tehnička matrica poređenja: CSV u odnosu na konkurente

Tehnički atributCSV (Trenutno)Excel (XLSX)ParquetJSON
Tip fajlaRavna tabela u običnom tekstuKomprimovana XML tabelaBinarno kolonsko skladištenjeHijerarhijski tekst
Više tabelaNe (samo jedna ravna tabela)Da (više radnih svezaka i listova)Skladištenje zasnovano na particijamaUgnježdeni nizovi i objekti
Tipovi podatakaNetipizirani sirovi tekstTipizirane ćelije, formule, formatiranjeStrogi binarni tipovi kolonaPrimitivni tipovi (string, broj, bool)
Analitika velikih podatakaSporo (zahteva linearno čitanje svakog reda)Nije pogodno za obradu velikih količina podatakaUltra-brzo (odbacivanje kolona i potiskivanje predikata)Umereno

Uobičajeni režimi oštećenja i vodič za heksadecimalni oporavak

Kolone se pomeraju udesno ili se broj redova ne podudara.

Osnovni uzrok: Tekstualno polje koje sadrži zarez koji nije eskapiran i nema okolne navodnike.

Oporavak: RFC 4180 zahteva da polja koja sadrže zareze budu obavijena dvostrukim navodnicima: "Prezime, Ime".

Akcentovani karakteri se prikazuju kao čudni simboli (mojibake kao što je é umesto é) u Excel-u.

Osnovni uzrok: Excel je otvorio UTF-8 CSV pretpostavljajući staru Windows ANSI/CP1252 kodnu šemu karaktera.

Oporavak: Dodajte 3-bajtni UTF-8 znak za redosled bajtova (0xEF 0xBB 0xBF) na početak fajla.

Bezbednosna analiza i vektori napada parsera

CSV fajlovi se otvaraju direktno u softveru za tabele kao što su Excel i Google Sheets, izlažući korisnike napadima ubacivanjem formula (CSV Injection).

Poznati vektori napada

  • Injekcija formula: Ćelije koje počinju sa '=', '+', '-', ili '@' izvršavaju makroe tabele ili DDE komande (npr. '=cmd|' /C calc'!A0').
  • Eksfiltracija podataka putem HYPERLINK() formula koje šalju osetljive podatke iz ćelija na udaljene servere napadača prilikom klika.

Najbolje prakse za zaštitu: Prilikom izvoza korisničkih podataka u CSV, stavite jednostruki navodnik (') ili tabulator ispred bilo koje ćelije koja počinje sa '=', '+', '-', ili '@' da biste primorali prikaz običnog teksta u Excel-u.

Istorijat i prekretnice

2015W3C model tabelarnih podataka i metapodataka na vebu standardizuje CSV na vebu (CSVW) pomoću JSON-LD deskriptora metapodataka.
2005IETF objavljuje RFC 4180, uspostavljajući formalnu specifikaciju za CSV fajlove.
1972IBM Fortran (H Extended) kompajler implementira ulaz/izlaz razdvojen zarezima.

Ključne prednosti

  • Maksimalna jednostavnost: čitljivo u bilo kom uređivaču teksta i moguće ga je uvesti u svaku bazu podataka i tabelarni program.
  • Izuzetno brzo strimovanje red po red bez kreiranja punog DOM-a u memoriji.
  • Minimalna režija: bez opširne sintakse tagova ili definicija šema.

Tehnička ograničenja i nedostaci

  • Nema standardnih tipova podataka: brojevi, datumi, bulove vrednosti i tekst se skladište kao sirovi stringovi.
  • Nema podrške za više tabela, formatiranje ćelija, formule ili meta-podatke.
  • Sukobi graničnika (zarezi unutar teksta, decimalni zarezi u evropskim lokalima) izazivaju česte greške u parsiranju.

Zanimljivosti

  • U mnogim evropskim zemljama gde se zarezi koriste kao decimale, tačka-zarez (;) se koristi umesto zareza kao CSV separator.
  • Microsoft Excel je istorijski zahtevao UTF-8 BOM (0xEF 0xBB 0xBF) za pravilan prikaz akcentovanih karaktera koji nisu ASCII.
  • Britanska nacionalna zdravstvena služba je 2020. godine izgubila skoro 16.000 zapisa o praćenju kontakata zbog COVID-19, jer su podaci uvezeni u zastareli format Excel tabele koji je ograničavao broj redova na 65.536.

Često postavljana tehnička pitanja

Šta je RFC 4180?

RFC 4180 je zvanični IETF standard za CSV. On nalaže da polja koja sadrže zareze, prelaze u novi red ili dvostruke navodnike moraju biti zatvorena u dvostruke navodnike, a unutrašnji navodnici se moraju eskapirati njihovim udvostručavanjem ("").

Zašto se CSV fajlovi otvaraju sa iskvarenim karakterima u Excel-u?

Starije verzije Microsoft Excel-a podrazumevano koriste lokalnu Windows kodnu stranicu (poput Windows-1252) umesto UTF-8 kada direktno otvaraju CSV fajlove. Dodavanje UTF-8 BOM-a (Byte Order Mark) na početku fajla primorava Excel da ispravno dekodira UTF-8.

Šta je CSV injekcija (injekcija formula)?

CSV injekcija se dešava kada se korisnički unos kome se ne veruje, a koji sadrži vodeće okidače formula ('=', '+', '-', '@'), izveze u tabelarni fajl. Kada se otvori u softveru kao što je Excel, tabela automatski izvršava formulu ili komandu dinamičke razmene podataka (DDE), potencijalno pokrećući sistemske komande ili eksfiltrirajući podatke.