encyklopedia.space

CSV (Comma‑Separated Values)

CSV (ang. Comma‑Separated Values) to prosty format pliku tekstowego służący do przechowywania danych tabelarycznych. Każdy wiersz pliku odpowiada jednemu rekordowi, a poszczególne pola (kolumny) są oddzielone znakiem separatora, najczęściej , (przecinek), jednak dopuszczalne są także inne znaki, takie jak średnik (;), tabulacja (\t) czy spacja.

Historia

Pierwsze implementacje formatu CSV pojawiły się jeszcze w latach 1970 w środowiskach systemów operacyjnych Uniks i wczesnych wersjach programów do obsługi baz danych. Format zyskał popularność wraz z rozwojem arkuszy kalkulacyjnych, takich jak Lotus 1‑2‑3 i później Microsoft Excel, które umożliwiały eksport i import danych w tym właśnie formacie.

Budowa pliku CSV

  • Wiersze – każdy nowy wiersz kończy się znakiem końca linii (\n lub \r\n).
  • Pola – wiersz dzieli się na pola przy pomocy wybranego separatora.
  • Ucieczka znaków – jeżeli pole zawiera znak separatora, znak końca linii lub cudzysłów, całe pole jest otaczane cudzysłowami ("). Wewnątrz takiego pola cudzysłów jest podwajany (""). Przykład: "Jan, \"Kowalski\"".
  • Kodowanie znaków – współczesne pliki CSV najczęściej używają kodowania UTF‑8, choć spotykane są także ISO‑8859‑2 i inne.

Standardy i specyfikacje

Choć CSV nie posiada jednej, ogólnie przyjętej specyfikacji, istnieje kilka formalnych opisów:

  • RFC 4180 – opisuje najpopularniejszy wariant używany w aplikacjach Excel i LibreOffice.
  • Specyfikacja W3C podatna na rozszerzenia, np. obsługę niestandardowych separatorów.

Zastosowania

Format CSV jest wykorzystywany w wielu dziedzinach:

Zalety i wady

Zalety Wady
Prosta struktura – łatwy do odczytu i edycji w dowolnym edytorze tekstu. Brak jednoznacznego standardu – różnice w separatorach i kodowaniu.
Wysoka kompatybilność – obsługiwany przez praktycznie wszystkie aplikacje BI i systemy ETL. Ograniczona możliwość wyrażania typów danych (brak schematu).
Niska waga – niewielki rozmiar pliku w porównaniu z formatami binarnymi. Problemy z danymi zawierającymi znaki nowej linii, przecinki lub cudzysłowy (wymagają ucieczki).

Porównanie z innymi formatami

W odniesieniu do innych popularnych formatów używanych do wymiany danych:

  • JSON – lepszy do reprezentacji struktur zagnieżdżonych, ale bardziej „ciężki” do ręcznej edycji.
  • XML – oferuje bogate możliwości opisu schematu i walidacji, kosztem większej złożoności.
  • Parquet – zoptymalizowany pod kątem przechowywania dużych zbiorów danych w kolumnowym formacie, ale wymaga specjalistycznych narzędzi.
  • XLSX – format biurowy Excel, wspiera formuły, formatowanie i wiele arkuszy, ale jest binarny i trudniejszy do przetworzenia w czystym CLI.

Przykładowy plik CSV

Imię,Nazwisko,Wiek,Miasto
Jan,Kowalski,30,Warszawa
Anna,Nowak,25,Gdańsk
"Piotr, Jr.",Zieliński,40,"Kraków, Polska"

Wskazówki praktyczne

  • Ustal jednolity separator i kodowanie znaków dla całego projektu.
  • Używaj cudzysłowów przy polach mogących zawierać separator lub znak nowej linii.
  • Jeśli plik ma być otwierany w Excelu, rozważ zapis w kodowaniu UTF‑8 z BOM, aby uniknąć problemów z polskimi znakami.
  • W dużych projektach stosuj dodatkowy plik .schema opisujący typy i kolejność kolumn.

Patrz także

JSON, XML, Parquet, XLSX, baza danych, arkusz kalkulacyjny, programowanie, ETL.