Otwórz plik CSV, aby sprawdzić jego strukturę: liczbę pól w każdym rekordzie względem nagłówka, puste i powtórzone nazwy kolumn, zabłąkane cudzysłowy, mieszane znaki końca wiersza i puste wiersze. Dodaj opcjonalne reguły dla kolumn – np. liczba całkowita, data, e-mail, wartość wymagana, unikatowa, dozwolone wartości lub wyrażenie regularne – a każdy problem zostanie wypisany z numerem wiersza danych, kolumną i wartością. Reguły korzystają ze słownictwa Frictionless Table Schema. Plik jest sprawdzany w Twojej przeglądarce, a nie wysyłany na serwer.
Jak sprawdzić poprawność pliku CSV
- Otwórz plik
.csv,.tsvlub.txt. Ogranicznik i znacznik BOM dla UTF-8 lub UTF-16 są wykrywane automatycznie; jeśli kolumny wyglądają nieprawidłowo, wybierz inny ogranicznik lub starsze kodowanie w ustawieniach importu. - Opcjonalnie podaj liczbę kolumn, którą musi mieć każdy rekord. Jeśli zostawisz pole puste, użyta zostanie liczba kolumn nagłówka.
- Opcjonalnie dodaj reguły dla interesujących Cię kolumn: typ, to, czy wartość jest wymagana lub musi być unikatowa, dozwolone wartości, minimum i maksimum, zakres długości albo wzorzec.
- Uruchom sprawdzanie i przejrzyj raport: najpierw błędy, potem ostrzeżenia. Popraw wartości w edytorze CSV lub uporządkuj je w narzędziu Czyszczenie danych CSV, a potem sprawdź plik ponownie.
Aby przed napisaniem reguł zobaczyć typy, puste komórki i różne wartości każdej kolumny, sprawdź plik w profilu kolumn.
Kontrole struktury każdego rekordu
| Liczba pól (błąd) | Rekord ma więcej lub mniej pól niż nagłówek albo niż podana przez Ciebie liczba. RFC 4180 zakłada, że każdy rekord ma tyle samo pól; niezgodność zwykle oznacza ogranicznik bez cudzysłowu albo brakującą wartość. |
|---|---|
| Pusty nagłówek (błąd) | Nazwa kolumny jest pusta lub składa się z samych spacji. Raport podaje jej pozycję. |
| Powtórzony nagłówek (błąd) | Dwie nazwy kolumn są takie same po usunięciu spacji z brzegów. Raport podaje obie pozycje. |
| Zabłąkany cudzysłów (ostrzeżenie) | Znak cudzysłowu występuje wewnątrz wartości bez cudzysłowu, np. 5" screen. Wartość pozostaje w zapisanej postaci, a raport podaje liczbę takich przypadków w pliku. |
| Tekst po cudzysłowie zamykającym (ostrzeżenie) | Po cudzysłowie zamykającym, a przed kolejnym ogranicznikiem występują znaki, jak w "abc"x. |
| Mieszane znaki końca wiersza (ostrzeżenie) | Plik łączy zakończenia rekordów CRLF, LF i CR. Raport liczy każdy rodzaj osobno. |
| Puste wiersze (ostrzeżenie) | Puste linie między rekordami. Są pomijane, a raport podaje ich liczbę. |
| Spacje na brzegach (ostrzeżenie) | Wartość ma spacje przed tekstem lub po nim. Domyślnie włączone; wartości składające się wyłącznie ze spacji nie są zgłaszane. |
Wartość w cudzysłowie, który nigdy się nie zamyka, przerywa sprawdzanie błędem wskazującym rekord, w którym się zaczyna, bo reszty pliku nie da się wtedy wiarygodnie podzielić na rekordy.
Reguły kolumn: typy, wymagane, unikatowe i wzorce
| Typ: liczba całkowita (integer) | Tylko opcjonalny znak i cyfry, np. -12 lub 007. Wartości przekraczające ±9 007 199 254 740 991 są zgłaszane, więc długie identyfikatory (np. numery rachunków) sprawdzaj regułą tekstową ze wzorcem. |
|---|---|
| Typ: liczba (number) | Zwykły zapis dziesiętny z kropką, np. 3.5, -0.25 lub 1e3. Bez separatorów tysięcy, walut i otaczających spacji – kwota zapisana jako 1 234,50 nie przejdzie tej reguły. |
| Typ: wartość logiczna (boolean) | true lub false, wielkość liter dowolna. 1, 0, yes i no są zgłaszane. |
| Typ: data, data i godzina (date, datetime) | Rzeczywista data kalendarzowa w zapisie YYYY-MM-DD, więc 2024-02-30 zostanie zgłoszone. Wariant z godziną dodaje czas (2024-03-05T09:30, opcjonalnie sekundy i przesunięcie Z lub +02:00). |
| Typ: tekst z formatem (string) | E-mail (proste sprawdzenie kształtu name@domain.tld, a nie test, czy adres działa), URI (bezwzględny adres URL ze schematem) lub UUID (wersje 1–8). |
| Wymagane | Wartość nie może być pusta. Bez tej reguły puste wartości przechodzą wszystkie pozostałe reguły. |
| Unikatowe | Żadna wartość nie może się powtórzyć w kolumnie. Raport wskazuje wiersz, w którym wystąpiła po raz pierwszy. Puste wartości nie są porównywane. |
| Dozwolone wartości | Wartość musi być dokładnie równa jednej z wymienionych, łącznie z wielkością liter i spacjami. |
| Minimum, maksimum | Granice włącznie dla kolumn z liczbami całkowitymi i dziesiętnymi albo daty ISO dla kolumn z datą i datą z godziną. |
| Minimalna i maksymalna długość | Liczona w znakach Unicode, więc é i 日 liczą się jako jeden znak każdy. |
| Wzorzec | Wyrażenie regularne, które musi pasować do całej wartości, jak wymaga Table Schema, np. [A-Z]{2}\d{4}. Dopasowanie rozróżnia wielkość liter. |
Reguła dotyczy kolumny, której nagłówek dokładnie odpowiada nazwie w regule; reguły dla kolumn, których nie ma w pliku, są pomijane. Reguły możesz zapisać jako plik JSON w formacie Table Schema i wczytać ponownie przy kolejnym eksporcie; nieznane typy i klucze we wczytanym schemacie są ignorowane.
Jak czytać raport
- Numery wierszy oznaczają rekordy danych po nagłówku (nagłówek to wiersz 0). Wartość z podziałem wiersza w cudzysłowie nadal stanowi jeden rekord, więc numer wiersza może się różnić od numeru linii w edytorze tekstu.
- Każdy problem podaje kolumnę i przytacza wartość, dzięki czemu wyszukasz ją w przeglądarce CSV lub w edytorze.
- Błędy naruszają strukturę lub regułę; ostrzeżenia wskazują dane, które są poprawnym CSV, ale często powodują problemy przy imporcie.
- Wyświetlanych jest do 5000 problemów. Powyżej tej liczby sumy dla każdego rodzaju problemu są nadal liczone, a lista jest oznaczona jako obcięta.
Limity walidacji i prywatność
Walidator odczytuje po jednym rekordzie, więc pliki większe niż 25 MB (limit pracy interaktywnej) są sprawdzane strumieniowo w tle, z paskiem postępu i możliwością anulowania. W trybie strumieniowym rekordy z mniejszą liczbą pól niż nagłówek są obecnie uzupełniane przed sprawdzeniem, więc jako błąd liczby pól zgłaszane są tylko rekordy z nadmiarowymi polami.
Walidacja odbywa się w Twojej przeglądarce. Plik CSV nie jest wysyłany na żaden serwer.
Przykład: sprawdzanie eksportu rejestracji czterema regułami
Eksport rejestracji sprawdzony czterema regułami: id to wymagana, unikatowa liczba całkowita; email to wymagany tekst w formacie e-mail; signup_date to data; plan dopuszcza basic, pro i team. Wynik to raport walidatora – po podsumowaniu jeden problem w każdym wierszu: niemożliwa data, adres e-mail bez końcówki domeny, Pro z niewłaściwą wielkością liter, powtórzony id, brakujący e-mail oraz team ze spacją na końcu, co jest jednocześnie ostrzeżeniem i niedozwoloną wartością.
id,email,signup_date,plan 1,ana@example.com,2024-02-30,pro 2,kim@example,2024-03-01,Pro 2,bao@example.com,2024-03-04,basic 4,,2024-03-05,team
{"rows":4,"errors":6,"warnings":1,"truncated":false}
{"code":"type","row":1,"column":"signup_date","value":"2024-02-30","params":{"type":"date"}}
{"code":"format","row":2,"column":"email","value":"kim@example","params":{"format":"email"}}
{"code":"enum","row":2,"column":"plan","value":"Pro","params":{"allowed":"basic, pro, team"}}
{"code":"unique","row":3,"column":"id","value":"2","params":{"first":2}}
{"code":"whitespace","row":4,"column":"plan","value":"team ","params":{}}
{"code":"required","row":4,"column":"email","value":"","params":{}}
{"code":"enum","row":4,"column":"plan","value":"team ","params":{"allowed":"basic, pro, team"}}Pytania i odpowiedzi
Dlaczego wartość ze spacją jest zgłaszana przy liście dozwolonych wartości?
Reguły porównują wartość dokładnie w zapisanej postaci, bez obcinania spacji, więc team to nie team. Usuń spacje w tej kolumnie narzędziem Czyszczenie danych CSV albo popraw eksport.
Czy walidacja zmienia mój plik?
Nie. Narzędzie tylko odczytuje plik i raportuje, co znalazło. Problemy popraw w edytorze lub w systemie źródłowym.
Czy mogę używać tych samych reguł dla każdego miesięcznego eksportu?
Tak. Zapisz reguły jako plik JSON w formacie Table Schema i wczytaj go następnym razem; reguły są dopasowywane do kolumn po nazwie.