Tabela CSV (.csv)
RFC StandardFormat 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:
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 sygnaturyREPREZENTACJA ASCII: Bajty tekstowe; kodowanie może się różnić
Normalizacja: RFC 4180 / IETF
Specyfikacja techniczna
| Architektura kontenera | Tekstowy plik płaski z danymi tabelarycznymi w wierszach i kolumnach, oddzielonymi separatorami |
| Kompresja | Gzip / 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ów | Nie dotyczy |
| Kanały i struktura | Rekordy wierszy rozdzielone znakami CRLF, a kolumny rozdzielone przecinkami |
| Maks. wymiary | Nieograniczone; możliwość przesyłania strumieniowego do gigabajtów bez ładowania całego pliku do pamięci |
| Przezroczystość | Nie dotyczy |
| Streaming i progresywne ładowanie | Natywne przetwarzanie strumieniowe wiersz po wierszu obsługiwane przez wszystkie rurociągi danych |
Techniczna macierz porównawcza: CSV a konkurencja
| Atrybut techniczny | CSV (Bieżący) | Excel (XLSX) | Parquet | JSON |
|---|---|---|---|---|
| Typ pliku | Płaska tabela w czystym tekście | Skompresowany arkusz kalkulacyjny XML | Binarny magazyn kolumnowy | Tekst hierarchiczny |
| Wiele arkuszy | Brak (tylko pojedyncza płaska tabela) | Tak (wiele skoroszytów i arkuszy) | Magazyn oparty na partycjach | Zagnieżdżone tablice i obiekty |
| Typy danych | Nieotypowany surowy tekst | Komórki z określonym typem danych, formuły, formatowanie | Ścisłe binarne typy kolumn | Typy prymitywne (ciąg, liczba, wartość logiczna) |
| Analityka dużych zbiorów danych | Wolny (wymaga liniowego odczytu każdego wiersza) | Nieodpowiedni do dużych zbiorów danych | Bardzo 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
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.
Powiązane pary konwersji CSV
Konwersja arkusza programu Excel do formatu CSV wyodrębnia surowe dane tabelaryczne do powszechnie używanego formatu tekstowego, szeroko obsługiwanego przez oprogramowanie.
Konwersja prostych plików tekstowych CSV na rozbudowane arkusze kalkulacyjne XLSX umożliwia zaawansowane formatowanie danych, stosowanie formuł i pracę z wieloma arkuszami.
Konwersja płaskich plików tekstowych na ustrukturyzowane relacyjne bazy danych pozwala na uruchamianie szybkich zapytań i zarządzanie złożonymi relacjami danych.
Przekształć skrypty kopii zapasowych relacyjnych baz danych w płaskie arkusze kalkulacyjne w celu prostej analizy danych i tworzenia raportów.
Konwersja hierarchicznych zbiorów danych HDF5 na płaskie pliki CSV z danymi telemetrycznymi przekształca złożone, wielowymiarowe dane naukowe w proste wiersze i kolumny do analizy w arkuszach kalkulacyjnych.
Konwersja wielowymiarowych siatek naukowych NetCDF na płaskie pliki CSV z danymi telemetrycznymi sprawia, że złożone dane klimatyczne i oceanograficzne stają się czytelne w podstawowych programach do arkuszy kalkulacyjnych.
Konwersja plików vCard na plik CSV kontaktów przekształca hierarchiczne wizytówki w płaskie wiersze arkusza kalkulacyjnego w celu łatwego importu do baz danych.