Curiozități și probleme cu CSV

Ca vine vorba de CSV, ieri am aflat ca CSV-urile folosesc delimitări diferite (o parte din lume folosește , o parte folosește ; ) , pare-se din cauza delimitării valorilor monetare cu virgula în anumite tari gen Franța Danemarca etc. Ati mai avut careva problem asta?

2 Likes

Cel mai frustrant la CSV-uri e cand trebuie sa le explici oamenilor ca n-au setat corect ceva prin OS si de asta le deschide aiurea Excel-ul. :grinning:

Poti tine si video in CSV, dar nu nativ si nu e neaparat cea mai buna idee.

De la un yaml invalid am avut incident :frowning:

La CSV le spun sa NU il deschida cu excel ca il mai buleste

Da, folosesc CSV constant de vreo 12 ani. E perfect pt rapoarte, chiar si mai mari (2-3-700MB).

In Windows e setare de OS. Probabil si pe Mac e configurabil, dar vine cu setarea normala.

Cred ca problemele apar de la faptul ca e putin prea permisiv cu regulile. Sau soft-urile care lucreaza cu CSV te lasa sa schimbi unele din caractere. Pana si in PHPMyAdmin poti seta alte caractere si iti exporta un .csv, chiar daca s-ar putea sa fie TSV sau… altceva.

Și mie mi se pare foarte… fragil; cred că din același motiv nu mi-a plăcut python în mod deosebit. Un indent aiurea și gata, s-a stricat jucăria :smiley:

CSV este echivalentul unui tabel până la urmă. O să te lovești de aceeași problemă dacă vrei să stochezi date non-tabulare într-un format tabular.

Am avut probleme cu o aplicație (3rd party) care exporta date în csv dar nu era capabilă să importe aceleași date exportate cu câteva minute în urmă :smiley: CSV se deschidea perfect în Excel, dar nu și în aplicație. Bonus: uneori importa ok, alteori nu.

Eu prefer JSON fiindca poti valida schema si cum lucrez cu node/JS/TS mi-e trivial.

ndjson is the cool stuff, poti face incarcare progresiva cu un stream de date.

Yaml in Docker, gitlab-ci si kubernetes e horror. Mereu trebuie validat si de obicei ai probleme doar cu indentarea gresita.

CSV-ul e util daca vrei sa fie cat mai mic fisierul sau sa importi din excel.

1 Like

Cum procedezi cu diferentele de parsare a documentelor, suporti ambele posibilitati (virgula si punct si virgula) sau faci obligatoriu unul dintre ele?

E cam greu (nu e rezonabil) sa le spui utilizatorilor dintr-o tara sa isi schimbe setarile de la OS pentru a se plia pe cerintele softului tau.

Îți recomand să nu mai folosești CSV-uri din motivele discutate până acum + suport dubios pentru diacritice.

1 Like

De ce nu sqlite?

2 Likes

Ca și completare:

https://www.sqlite.org/appfileformat.html

Un feature pe care l-am descoperit recent din SQLite e că se pot face zip-uri: The SQLite Zipfile Module

Datele sunt intr-un singur sens, e vorba de rapoarte. Am norocul ca nu schimb prea des clientii. CSV e OK raportat la cat ocupa fisierul, cat dureaza generarea si resursele necesare in timpul generarii. Am observat ca XLSX genereaza in anumite situatii fisiere mai mici ca dimensiune, dar nu substantial - in schimb omoara resursele server-ului (depinde si de libraria folosita).

Teoretic în europa by default separatorul pentru csv e ; din câte știu.

Dar cum noi am folosit la greu versiunile piratate de Windows și Office n-aveam problema asta că le aveam setate pe US :))

Una din cele mai comune probleme ce le aveam când mai făceam IT support și din astea în tinerețe era că imprimanta europeană era setată pe A4 și windows și office erau pe Letter pentru că erau versiunile americane piratate :))

Am implementat un parser / saver din/in format csv.

Din ce tin minte, nu a fost chiar trivial. Treaba e ca trebuia sa citeasca tot felul de fisiere care erau foarte ‘elastice’, ba aveau delimitatori la stringuri (si aia cand ", cand ', functie de cum le tuna), ba n-aveau, erau tot felul de probleme cu modul in care apareau , sau " sau ’ in stringuri etc…

Parserul trebuia sa tina cont de ce era si inainte si inapoi, ca sa interpreteze corect caracterele.
In final din ce tin minte am avut un parser decent, in sensul ca putea sa incarce fisiere csv corect desi de exemplu excelul nu reusea sa le importe corect.

YAML e și superset de JSON. Dacă te chinui YAML poate fi și Python. Ce nu poate fi YAML?

Stați departe de YAML pls.

Cand vreti sa deschideti un CSV din Excel mergeti aici pentru a putea alege detalii precum ce separator sa foloseasca. Similar si in LibreOffice

Era bine daca in cazul meu problema era doar ca nu stia ce separator sa foloseasca. Problemele apareau pentru ca existau separatori in stringuri si de-astea similare.

exista deja extensia .jsonl

1 Like

daca esti tu cel care genereaza csv-ul poti sa-i spui ce delimitator foloseste si atunci nu mai este probleme

1 Like

TSV (tab separated values). Macar tab e doar unul, or is it :grin:

1 Like

Pleci de la premisa că TOȚI utilizatorii aplicației tale au regionalele setate la fel, premisă care îți pot spune din proprie experiență că este complet greșită :))

1 Like