Tabela CSV (.csv)

RFC Standard

Format Comma-Separated Values (CSV) to wszechobecny format czystego tekstu przeznaczony do danych tabelarycznych, w którym każda linia reprezentuje rekord danych, a pola są oddzielone znakami ogranicznika.

Konwertuj XLSX na CSV

Darmowy konwerter z XLSX na CSV w przeglądarce. Konwertuj pliki natychmiast na swoim urządzeniu.

Kompresuj CSV online

Prywatnie - pliki nigdy nie opuszczają Twojego urządzenia

Inspekcja i metadane

Systemy operacyjne i analizatory plików identyfikują pliki CSV, sprawdzając początkową sekwencję bajtów binarnych:

Wybierz lub upuść pliki tutaj

Prywatnie - pliki nigdy nie opuszczają Twojego urządzenia

lub wklej Ctrl+V
Gwarancja prywatności bez przesyłania danych do sieci: 0 bajtów przesłanych na zewnętrzne serwery. Całe przetwarzanie odbyło się lokalnie w piaskownicy przeglądarki.

Podpis nagłówka na poziomie bajtów (Magic Bytes)

Systemy operacyjne i analizatory plików identyfikują pliki CSV, sprawdzając początkową sekwencję bajtów binarnych:

PODPIS HEX (OFFSET 0):

Brak stałej sygnatury

REPREZENTACJA ASCII: Bajty tekstowe; kodowanie może się różnić

Normalizacja: RFC 4180 / IETF

Specyfikacja techniczna

Architektura konteneraTekstowy plik płaski z danymi tabelarycznymi w wierszach i kolumnach, oddzielonymi separatorami
KompresjaGzip / Deflate osiąga 85%-95% kompresji na powtarzalnych rekordach tabelarycznych
Kolejność bajtów (Endianness)Strumień tekstu UTF-8 (opcjonalny znacznik BOM UTF-8 EF BB BF używany przez program Excel)
Przestrzenie kolorówNie dotyczy
Kanały i strukturaRekordy wierszy rozdzielone znakami CRLF, a kolumny rozdzielone przecinkami
Maks. wymiaryNieograniczone; możliwość przesyłania strumieniowego do gigabajtów bez ładowania całego pliku do pamięci
PrzezroczystośćNie dotyczy
Streaming i progresywne ładowanieNatywne przetwarzanie strumieniowe wiersz po wierszu obsługiwane przez wszystkie rurociągi danych

Techniczna macierz porównawcza: CSV a konkurencja

Atrybut technicznyCSV (Bieżący)Excel (XLSX)ParquetJSON
Typ plikuPłaska tabela w czystym tekścieSkompresowany arkusz kalkulacyjny XMLBinarny magazyn kolumnowyTekst hierarchiczny
Wiele arkuszyBrak (tylko pojedyncza płaska tabela)Tak (wiele skoroszytów i arkuszy)Magazyn oparty na partycjachZagnieżdżone tablice i obiekty
Typy danychNieotypowany surowy tekstKomórki z określonym typem danych, formuły, formatowanieŚcisłe binarne typy kolumnTypy prymitywne (ciąg, liczba, wartość logiczna)
Analityka dużych zbiorów danychWolny (wymaga liniowego odczytu każdego wiersza)Nieodpowiedni do dużych zbiorów danychBardzo szybki (przycinanie kolumn i spychanie predykatów)Umiarkowany

Typowe tryby uszkodzeń i przewodnik odzyskiwania szesnastkowego

Kolumny przesuwają się w prawo lub liczby wierszy się nie zgadzają.

Główna przyczyna: Pole tekstowe zawierające niezabezpieczony przecinek bez otaczających znaków cudzysłowu.

Odzyskiwanie: Norma RFC 4180 wymaga, aby pola zawierające przecinki były ujęte w podwójny cudzysłów: „Kowalski, Jan".

Znaki akcentowane wyświetlają się jako dziwne symbole (zniekształcenia znaków, takie jak é zamiast é) w programie Excel.

Główna przyczyna: Program Excel otworzył plik CSV w formacie UTF-8, zakładając starsze kodowanie znaków Windows ANSI/CP1252.

Odzyskiwanie: Dodaj 3-bajtowy znacznik kolejności bajtów UTF-8 (0xEF 0xBB 0xBF) na początku pliku.

Analiza bezpieczeństwa i wektory ataku na parser

Pliki CSV otwierają się bezpośrednio w oprogramowaniu arkuszy kalkulacyjnych, takim jak Excel i Google Sheets, narażając użytkowników na ataki polegające na wstrzykiwaniu formuł (ataki CSV Injection).

Znane wektory ataku

  • Wstrzykiwanie formuł: komórki zaczynające się od znaków „=”, „+”, „-” lub „@” mogą uruchamiać makra arkuszowe lub polecenia DDE (np. „=cmd|” /C calc’!A0’).
  • Eksfiltracja danych za pomocą formuł HYPERLINK() wysyłających poufne dane komórek do zdalnych serwerów atakującego po kliknięciu.

Najlepsze praktyki obronne: Podczas eksportowania danych użytkownika do formatu CSV należy poprzedzić apostrofem (') lub tabulatorem każdą komórkę zaczynającą się od '=', '+', '-' lub '@', aby wymusić wyświetlanie jej jako zwykłego tekstu w programie Excel.

Pochodzenie historyczne i kamienie milowe

2015Model W3C „Model for Tabular Data and Metadata on the Web” standaryzuje CSV w sieci (CSVW) za pomocą deskryptorów metadanych JSON-LD.
2005IETF publikuje dokument RFC 4180, ustanawiając formalną specyfikację dla plików CSV.
1972Kompilator IBM Fortran (H Extended) wdraża wejście/wyjście rozdzielane przecinkami.

Główne zalety

  • Maksymalna prostota: czytelny w każdym edytorze tekstu i możliwy do zaimportowania do każdej bazy danych oraz arkusza kalkulacyjnego.
  • Niezwykle szybkie przesyłanie strumieniowe wiersz po wierszu bez budowania pełnego modelu DOM w pamięci.
  • Minimalny narzut: brak rozwiniętej składni znaczników lub definicji schematu.

Ograniczenia techniczne i wady

  • Brak standardowych typów danych: liczby, daty, wartości logiczne i tekst są przechowywane jako surowe ciągi znaków.
  • Brak obsługi wielu arkuszy, formatowania komórek, formuł lub metadanych.
  • Konflikty separatorów (przecinki w tekście, przecinki dziesiętne w europejskich ustawieniach regionalnych) często powodują błędy podczas parsowania.

Ciekawe informacje techniczne

  • W wielu krajach europejskich, w których przecinki są używane jako separatory dziesiętne, jako separatory CSV stosuje się średniki (;).
  • Program Microsoft Excel historycznie wymagał znacznika BOM UTF-8 (0xEF 0xBB 0xBF), aby poprawnie wyświetlać znaki akcentowane spoza zestawu ASCII.
  • W głośnym przypadku z 2020 roku brytyjska służba zdrowia (NHS) utraciła prawie 16 000 rekordów śledzenia kontaktów z COVID-19, ponieważ dane zaimportowano do przestarzałego formatu arkusza programu Excel, który ograniczał liczbę wierszy do 65 536.

Często zadawane pytania techniczne

Czym jest dokument RFC 4180?

Dokument RFC 4180 to oficjalny standard IETF dla formatu CSV. Wymaga on, aby pola zawierające przecinki, znaki nowej linii lub podwójne cudzysłowy były ujęte w podwójne cudzysłowy, a wewnętrzne cudzysłowy były maskowane poprzez ich podwojenie ("").

Dlaczego pliki CSV otwierają się z uszkodzonymi znakami w programie Excel?

Starsze wersje programu Microsoft Excel domyślnie używają lokalnej strony kodowej systemu Windows (takiej jak Windows-1252) zamiast kodowania UTF-8 podczas bezpośredniego otwierania plików CSV. Dodanie znacznika BOM UTF-8 (Byte Order Mark) na początku pliku zmusza program Excel do prawidłowego dekodowania tekstu w kodowaniu UTF-8.

Czym jest wstrzykiwanie CSV (ataki Formula Injection)?

Do wstrzyknięcia formuł CSV dochodzi, gdy niezaufane dane użytkownika, których początek zawiera znaki wyzwalające formułę („=”, „+”, „-”, „@”), zostaną wyeksportowane do arkusza kalkulacyjnego. Po otwarciu pliku w programie takim jak Excel arkusz automatycznie wykonuje formułę lub polecenie dynamicznej wymiany danych (DDE), co może doprowadzić do uruchomienia poleceń systemowych lub wykradzenia danych.