CSV cu contacte (.csv)

RFC Standard

Comma-Separated Values (CSV) este un format omniprezent de text simplu pentru date tabelare, în care fiecare linie reprezintă o înregistrare, iar câmpurile sunt separate prin caractere delimitatoare.

Convertește din XLSX în CSV

Convertor gratuit din XLSX în CSV direct în browser. Convertește fișiere instantaneu pe dispozitivul tău.

Comprimă CSV online

Privat - fișierele nu părăsesc niciodată dispozitivul tău

Inspectare și metadate

Sistemele de operare și analizatoarele de fișiere identifică fișierele CSV prin inspectarea secvenței binare inițiale:

Selectează sau plasează fișierele aici

Privat - fișierele nu părăsesc niciodată dispozitivul tău

sau lipește Ctrl+V
Garanție de confidențialitate: nicio transmisie prin rețea: 0 octeți încărcați pe servere externe. Toată procesarea a avut loc local în sandbox-ul browserului tău.

Semnătura antetului la nivel de octet (octeți magici)

Sistemele de operare și analizatoarele de fișiere identifică fișierele CSV prin inspectarea secvenței binare inițiale:

SEMNĂTURĂ HEXAZECIMALĂ (DECALAJ 0):

Fără semnătură fixă

REPREZENTARE ASCII: Octeți text; codificarea variază (cel mai adesea UTF-8)

Standardizare: RFC 4180 / IETF

Specificații tehnice

Arhitectură containerFișier text plat cu delimitatori, care reprezintă rânduri și coloane de date tabelare
CompresieGzip și Deflate pot comprima textul repetitiv; dimensiunea rezultatului depinde de date și setări
Ordinea octețilorFlux text UTF-8 (BOM UTF-8 opțional EF BB BF, folosit de Excel)
Spații de culoareNu se aplică
Canale și structurăÎnregistrări delimitate prin CRLF, cu coloane separate prin virgule
Dimensiuni maximeNelimitat; poate fi transmis în flux până la dimensiuni de gigaocteți fără a încărca întregul fișier în memorie
TransparențăNu se aplică
Streaming și progresivProcesarea nativă în flux, linie cu linie, este acceptată de toate conductele de date

Matrice de comparație tehnică: CSV vs. concurenți

Atribut tehnicCSV (Curent)Excel (XLSX)ParquetJSON
Tip de fișierTabel plat text simpluFoaie de calcul XML comprimatăStocare binară pe coloaneText ierarhic
Foi multipleNu (doar un singur tabel plat)Da (mai multe registre de lucru și foi)Stocare bazată pe partițiiTablouri și obiecte imbricate
Tipuri de dateText brut netipatCelule tipizate, formule, formatareTipuri stricte de coloane binareTipuri primitive (șir, număr, valoare booleană)
Analiză Big DataLent (necesită citirea secvențială a fiecărui rând)Nepotrivit pentru volume mari de dateUltra-rapid (eliminarea coloanelor irelevante și împingerea predicatelor)Moderat

Moduri comune de corupție și ghid de recuperare hexazecimală

Coloanele se deplasează spre dreapta sau numărul de rânduri nu se potrivește.

Cauză principală: Un câmp text care conține o virgulă neprotejată și nu este încadrat între ghilimele.

Recuperare: RFC 4180 solicită ca câmpurile care conțin virgule să fie încadrate în ghilimele duble: "Smith, John".

Caracterele accentuate apar ca simboluri ciudate (mojibake cum ar fi é în loc de é) în Excel.

Cauză principală: Excel a deschis un CSV UTF-8 presupunând codificarea de caractere Windows ANSI/CP1252 moștenită.

Recuperare: Adaugă la începutul fișierului marcajul UTF-8 de ordine a octeților, format din 3 octeți (0xEF 0xBB 0xBF).

Analiză de securitate și vectori de atac asupra parserului

Fișierele CSV se deschid direct în software-ul de foi de calcul precum Excel și Google Sheets, expunând utilizatorii la atacuri de injectare a formulelor (injectare CSV).

Vectori de atac cunoscuți

  • Injecția de formule: celulele care încep cu „=”, „+”, „-” sau „@” pot executa macrocomenzi de foaie de calcul ori comenzi DDE (de exemplu, „=cmd|'/C calc'!A0”).
  • Exfiltrare de date prin formule HYPERLINK() care trimit date sensibile din celule către servere de la distanță ale atacatorului la clic.

Cele mai bune practici de securitate: Când exporți datele utilizatorilor în CSV, adaugă un apostrof (') sau un tabulator înaintea fiecărei celule care începe cu „=”, „+”, „-” sau „@” pentru ca Excel să o afișeze ca text simplu.

Origini istorice și repere

2015Modelul W3C pentru date tabelare și metadate pe web standardizează CSV pe Web (CSVW) cu descriptori de metadate JSON-LD.
2005IETF publică RFC 4180, stabilind specificația formală pentru fișierele CSV.
1972Compilatorul IBM Fortran (H Extended) implementează intrarea/ieșirea delimitată prin virgulă.

Avantaje cheie și beneficii

  • Simplitate maximă: fișierele pot fi citite în orice editor de text și importate în orice bază de date sau foaie de calcul.
  • Transmitere în flux foarte rapidă, linie cu linie, fără construirea unui DOM complet în memorie.
  • Suprasarcină minimă: fără sintaxă elaborată pentru etichete sau definiții de schemă.

Limitări tehnice și dezavantaje

  • Fără tipuri de date standard: numerele, datele calendaristice, valorile booleene și textul sunt stocate ca șiruri brute.
  • Fără suport pentru foi multiple, formatare de celule, formule sau metadate.
  • Conflictele de delimitatori (virgule în interiorul textului, virgule zecimale în localele europene) cauzează frecvent erori de analiză sintactică.

Curiozități tehnice interesante

  • În multe țări europene unde virgulele sunt folosite ca puncte zecimale, punctul și virgula (;) este folosită în locul virgulei ca separator CSV.
  • Microsoft Excel a necesitat istoric un BOM UTF-8 (0xEF 0xBB 0xBF) pentru a afișa corect caracterele accentuate non-ASCII.
  • Serviciul Național de Sănătate din Marea Britanie a pierdut în mod celebru aproape 16.000 de înregistrări de urmărire a contactelor COVID-19 în 2020, deoarece datele au fost importate într-un format de foaie de calcul Excel depășit care limita numărul de rânduri la 65.536.

Întrebări tehnice frecvente

Ce este RFC 4180?

RFC 4180 este standardul oficial IETF pentru CSV. Acesta impune ca câmpurile care conțin virgule, întreruperi de linie sau ghilimele duble să fie incluse între ghilimele duble, iar ghilimelele interne să fie protejate prin dublarea lor ("").

De ce se deschid fișierele CSV cu caractere corupte în Excel?

Versiunile mai vechi de Microsoft Excel folosesc implicit pagina locală de coduri Windows (cum ar fi Windows-1252) în loc de UTF-8 atunci când deschid direct fișierele CSV. Adăugarea unui BOM UTF-8 (Marcaj de Ordine a Byte-ilor) la începutul fișierului forțează Excel să decodifice corect UTF-8.

Ce este injecția CSV (injecția de formule)?

Injecția CSV apare când date nefiabile introduse de utilizator, care încep cu un caracter interpretat ca formulă ('=', '+', '-', '@'), sunt exportate într-un fișier de foaie de calcul. Când fișierul este deschis într-o aplicație precum Excel, aceasta execută automat formula sau comanda de schimb dinamic de date (DDE), ceea ce poate duce la rularea unor comenzi de sistem sau la exfiltrarea datelor.