CSV (format pliku)

Wikipedia:Weryfikowalność
Ten artykuł od 2017-09 wymaga zweryfikowania podanych informacji: Artykuł napisany z palca, w ogóle bez odniesienia się do zapisów standardu. Czy w każdej linii dopuszczalna jest różna ilość separatorów?.
Należy podać wiarygodne źródła w formie przypisów bibliograficznych.
Część lub nawet wszystkie informacje w artykule mogą być nieprawdziwe. Jako pozbawione źródeł mogą zostać zakwestionowane i usunięte.
Sprawdź w źródłach: Encyklopedia PWN • Google Books • Google Scholar • Federacja Bibliotek Cyfrowych • BazHum • BazTech • RCIN • Internet Archive (texts / inlibrary)
Dokładniejsze informacje o tym, co należy poprawić, być może znajdują się w dyskusji tego artykułu.
Po wyeliminowaniu niedoskonałości należy usunąć szablon {{Dopracować}} z tego artykułu.
CSV
ilustracja
Rozszerzenia pliku

.csv

Typ MIME

text/csv, text/csv;header

Data opracowania

październik 2005

Typ

tekstowy format przechowywania danych tabelarycznych

CSV (ang. comma-separated values, wartości rozdzielone przecinkiem) – format przechowywania danych w plikach tekstowych i odpowiadający mu typ MIME text/csv.

Specyfikacja formatu

Istnieje wiele implementacji standardu CSV – wiele z nich nie trzyma się ściśle wszystkich określonych tutaj zasad. Stanowią one jednak dobrze ugruntowaną i potwierdzoną dokumentem RFC 4180 ↓ część wspólną.

Końce linii

  • Poszczególne rekordy rozdzielone są znakami końca linii CRLF.
  • Ostatnia linia w pliku może nie zawierać znaku końca.
  • Znak CRLF może być elementem pola, które musi wtedy być ujęte w cudzysłowy.

Separator

  • Wartości pól zgodnie z nazwą formatu rozdzielone są przecinkami.
  • Jako separator pól bywa także stosowany znak średnika (lub inny zgodnie z ustawieniami regionalnymi systemu) albo tabulator, jednak zgodnie z RFC 4180 ↓ jest to niezalecane. W jednym pliku może być użyty tylko jeden rodzaj separatora.[potrzebny przypis]

Cudzysłów

  • Wartości pól mogą być ujęte w cudzysłowy,
  • Wartości zawierające używany znak separatora (przecinek, średnik, znak tabulacji[potrzebny przypis] lub znaki końca linii) muszą być ujęte w cudzysłowy.
  • Aby w treści pola umieścić cudzysłów należy wpisać znak cudzysłowu dwukrotnie, całą wartość ujmując w cudzysłowy (por. przykłady).

Uwagi

  • Spacje i inne białe znaki (w szczególności te przyległe do separatorów) należą do pól.
  • Pierwsza linia może stanowić nagłówek zawierający nazwy pól rekordów, jednak pierwszy wiersz pliku CSV wg standardu ma takie samo znaczenie jak pozostałe.

Przykłady

Przykładowe dane w arkuszu kalkulacyjnym:

A B C
1 Kowalski Jan Kłodzko
2 Nowak Zenon Szczecin
3 Brzęczyszczykiewicz Grzegorz Chrząszczyżewoszyce

i te same dane zapisane w postaci dokumentu CSV:

Kowalski,Jan,Kłodzko
Nowak,Zenon,Szczecin
Brzęczyszczykiewicz,Grzegorz,Chrząszczyżewoszyce

Znaki specjalne:

imię,opis,ocena
Andrzej Nowak,fajny,4
"Jan Wiśniewski","fajny","2"
Kowalski,"wiecznie pyta ""która godzina"", ale może być",5

Obsługa CSV w różnych aplikacjach

Format CSV, jako prostszy niż format DBF, jest obsługiwany przez większość arkuszy kalkulacyjnych i programów bazodanowych, jednak wspomniana dowolność wyboru separatorów ogranicza jego przenośność. Aby obejść to utrudnienie, tworzy się specjalne makra lub pozwala na konfigurowanie separatorów.

Filtr konwersji CSV z pakietu Microsoft Office pracuje przy założeniu, że plik CSV używa przecinka jako separatora, tymczasem Microsoft Excel i Access wyświetlają i zapisują plik CSV w formacie zgodnym z ustawieniami regionalnymi systemu, czyli w przypadku języka polskiego używa średnika zamiast przecinka do rozdzielania pól. Aby umożliwić automatyczną konwersję, tworzone są dedykowane makra.

Calc z pakietu OpenOffice.org pozwala na konfigurację filtra konwersji, w tym wybór separatorów niezależny od ustawień regionalnych, takie same możliwości oferuje Calc z pakietu LibreOffice.org

Biblioteki programistyczne

  • Dla języka Perl w archiwum CPAN dostępnych jest wiele bibliotek do obsługi formatu CSV[1].
  • Biblioteka standardowa języka Ruby zawiera klasę CSV[2].
  • Biblioteka standardowa PHP zawiera funkcje fgetcsv i fputcsv[3].
  • Język R posiada w pakiecie utils funkcje do obsługi pliku csv (read.csv i write.csv).
  • Biblioteka standardowa języka Python zawiera moduł csv[4].

Przypisy

  1. Najważniejsza to Text::CSV (w wersji uproszczonej: Text::CSV::Simple)
  2. CSV
  3. fgetcsv. php.net. [zarchiwizowane z tego adresu (2012-07-20)]. i fputcsv
  4. csv

Linki zewnętrzne

  • Y.Y. Shafranovich Y.Y., Common Format and MIME Type for Comma-Separated Values (CSV) Files, RFC 4180, IETF, październik 2005, DOI: 10.17487/RFC4180, ISSN 2070-1721, OCLC 943595667  (ang.).
  • How To: The Comma Separated Value (CSV) File Format. creativyst.com. [zarchiwizowane z tego adresu (2021-04-04)]. – Popularny opis formatu CSV (ang.)
  • The CSV format specification. supercsv.sourceforge.net. [zarchiwizowane z tego adresu (2009-01-25)]. – Definicja formatu CSV zapisana w rozszerzonej notacji BNF (ang.)