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 (
\nlub\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:
- Bazy danych – import i eksport danych pomiędzy systemami DBMS (np. MySQL, PostgreSQL).
- Arkusze kalkulacyjne – wymiana danych pomiędzy programami takimi jak Excel, LibreOffice Calc czy Google Sheets.
- Programowanie – biblioteki w językach Python, Java, C# oraz JavaScript umożliwiają łatwe parsowanie i generowanie plików CSV.
- Analiza danych – szybka wymiana zestawów danych między narzędziami statystycznymi (np. R, SAS).
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
.schemaopisujący typy i kolejność kolumn.
Patrz także
JSON, XML, Parquet, XLSX, baza danych, arkusz kalkulacyjny, programowanie, ETL.