Jest to propozycja standardu formatu tekstowych baz danych przechowywanych (najczęściej) w plikach z rozszerzeniem CSV (tzw. „rozdzielone przecinkami”).
Baza danych w formacie CSV to plik tekstowy zawierający dwuwymiarową tabelę: rekordy i kolumny. Każdy wiersz tabeli to osobny rekord, rekordy składają się z pól, a pola tworzą kolumny.
Rekordy rozdzielone są separatorem rekordów. Ogólnie jest to znak nowej linii. W systemie Windows jest to para znaków o kodach ASCII #13 (powrót karetki) i #10 (znak nowej linii), natomiast w systemie UNIX znak o kodzie ASCII #10 (znak nowej linii). Poza powyższymi prezentowany tutaj standard plików CSV dopuszcza (ale nie zaleca) jeszcze dwa znaki końca linii: #10#13 oraz #13 (raczej niewykorzystywane).
Dodatkowo, w pierwszym wierszu, mogą znajdować się nazwy pól. Nazwy te przechowywane są dokładnie w takiej samej konwencji jak zawartości pól rekordów.
Pola rozdzielone są separatorem pól. Może to być dowolny znak, ale najczęściej wykorzystuje się: przecinek „,”, średnik „;”, dwukropek „:” oraz tabulator lub znak belki pionowej „|”. Separatory pól występują tylko pomiędzy dwoma polami, a nie występują na początku rekordu (przed pierwszym polem) i na jego końcu (za ostatnim polem).
Dodatkowo zawartość pola może być objęta od przodu i od tyłu ogranicznikiem pola – dowolnym znakiem. Zazwyczaj jest to cudzysłów „abc” lub apostrof ‘abc’. Zdarza się, że pola są nieograniczone jakimkolwiek znakiem: abc. Jeżeli w polu znajduje się znak cudzysłowu lub znak będący separatorem pól, to pole to musi być ujęte ogranicznikami pola – cudzysłowami.
Należy tutaj zwrócić uwagę na małą niedogodność: tworząc bazę danych w formacie CSV trzeba pilnować aby wewnątrz pola nie znalazła się kombinacja znaków: ogranicznik pola + separator pól + ogranicznik pola. Oczywiste jest, że program uzna to za koniec jednego pola i początek następnego, a wówczas nastąpi przesunięcie danych. Dlatego też dla uniknięcia takich sytuacji zalecane jest używanie tabulatora jako separatora pól.
Wszystkie pola są typu tekstowego. Wprowadzenie innych typów pól (liczbowy, data/czas itp.) wydawało by się korzystne i ułatwiające pracę ale jest uniemożliwione przez format pliku.
W związku z powyższym zaleca się zapisywanie:
- daty w postaci rrrr.mm.dd z zerami wiodącymi (tj. poprzedzającymi numery miesięcy i dni mniejsze od 10, np. 01, 02 itd.) i znakiem rozdzielającym innym niż znak rozdzielający pola (np. kropka, myślnik);
- czasu w postaci gg.mm.ss z zerami wiodącymi (tj. poprzedzającymi numery mniejsze od 10, np. 00, 01, 02 itd.) i znakiem rozdzielającym innym niż znak rozdzielający pola (np. kropka, myślnik);
- daty i czasu w kolejności data+czas rozdzielonych innym znakiem niż znak rozdzielający pola i z zachowaniem reguł odpowiednich dla formatu daty i dla formatu czasu;
- wartości liczbowych bez jednostek (np. waluty) i z umieszczeniem tych jednostek w opisie pola. Jeżeli jednostki wartości liczbowych danego pola są różne dla różnych rekordów zaleca się utworzenie nowego pola, występującego bezpośrednio po danym polu, zawierającego odpowiednie jednostki.
(Zmiany i uzupełnienia z dnia 8.12.2010)