Fișierul vine pe email, ieri la 16:00, și trebuie în sistem mâine dimineața. Cineva stă câteva ore să copieze rând cu rând. Greșelile apar câteva zile mai târziu, când datele sunt deja folosite. Import automat de date rezolvă partea de copiat. Nu rezolvă datele care arată mai prost decât pretinde cine ți le trimite.
Cele trei defecte de mai jos se repetă. Apar în orice fișier primit de la un partener, un CRM sau un sediu central care exportă dintr-un sistem diferit de al tău.
De ce fișierele primite sunt întotdeauna mai murdare decât par
Cel care trimite fișierul vede datele bine în Excel. Coloanele arată frumos, totul e completat. Ce nu vede: că Excel ascunde spații la margini, că numerele mari au trecut în notație științifică la export și că acea coloană de cod produs pe care contezi ca identificator unic are 12 rânduri goale.
Sistemul care primește datele vede altceva. Vede textul brut, fiecare caracter, inclusiv cele invizibile. Asta e sursa devierii.
Un import automat de date nu poate ghici intenția. Dacă fișierul zice „08:00 ” (cu spațiu), sistemul nu știe că se voia „08:00″. Trebuie să știe el înainte de a scrie.
Cel mai scump defect e cel care nu generează eroare. Trece, intră în sistem și se vede abia când cineva raportează o neconcordanță. Până atunci, datele greșite au fost folosite.

Defectul 1: cheia goală care unește ce nu trebuie unite
Orice import care face deduplicare are nevoie de o cheie: câmpul care spune că două rânduri sunt același lucru. Codul de produs. Numărul de contract. CUI-ul firmei. Dacă acel câmp e gol în fișier, sistemul tratează golul ca o valoare validă.
Rezultatul: toate rândurile cu cheia goală se suprapun peste primul. Cincisprezece produse devin unul singur. Importul a mers fără eroare. Datele sunt greșite.
Verificarea care prinde asta e simplă. Înainte de import, numeri rândurile cu cheia goală sau nulă. Dacă numărul e mai mare decât zero, importul se oprește și raportează care rânduri au problema. Nu continuă și nu scrie nimic. Un import automat de date care scrie date greșite fără avertisment e mai rău decât copia manuală.
Defectul 2: numerele care s-au stricat la export
Excel are un obicei neplăcut cu numerele mari: la export în CSV, le pune în notație științifică. 1234567890 devine 1.23457E+9. Sistemul care importă primește un text, nu un număr, și ori îl respinge, ori îl trunchiază, ori îl ignoră silențios.
Punctul zecimal e altă sursă de probleme. Unele sisteme exportă cu punct ca separator, altele cu virgulă. Dacă fișierul vine cu virgulă și importatorul tău se așteaptă la punct, 12,50 devine 12 sau devine eroare, în funcție de cât de permisiv e parserul.
Coordonatele sunt un caz particular. O latitudine de 44.00 în loc de 44.43 nu generează eroare: e un număr valid. Validarea numerică singură nu ajunge. Ai nevoie de o a doua sursă ca să confirmi valorile care par plauzibile dar sunt greșite: un lookup pe cod poștal, un interval acceptabil per câmp.
Biblioteca pandas.read_csv are parametru dtype și decimal pentru asta. Modulul csv din Python citește totul ca text, ceea ce forțează validarea explicită. Ambele abordări sunt corecte; importante sunt nu instrumentul, ci validările pe care le scrii.
Defectul 3: spațiile care nu se văd și strică comparațiile
„08:00 ” și „08:00″ arată la fel pe ecran. Sunt valori diferite ca text. Dacă sistemul compară orar de intrare cu orar din baza de date și unul dintre ele are un spațiu în plus, comparația returnează fals. Niciun mesaj de eroare. Pur și simplu nu găsește potrivire.
Spațiile apar de obicei la capetele valorilor: un spațiu înainte de cod, un tab după dată, un enter ascuns la finalul unui câmp text. Trim automat pe toate câmpurile înainte de orice comparație e o regulă de bază, nu o optimizare opțională.
Același simptom apare cu majusculele inconsistente: „București” față de „bucuresti” față de „BUCUREȘTI”. Normalizarea se face la import, nu la interogare. Dacă normalizezi la interogare, o faci de fiecare dată pentru fiecare query. Dacă normalizezi la import, o faci o singură dată.
Diacriticele adaugă un strat suplimentar. „Iași” și „Iasi” sunt orașe diferite ca text. Dacă ești în România și lucrezi cu adrese, tratezi asta explicit sau accepti că un procent din adrese nu se vor potrivi niciodată cu ce ai în baza de date.
Import automat de date: verifică înainte să scrii
Ordinea contează. Un import automat de date care scrie date bune și date greșite amestecate e mai greu de curățat decât un import care n-a scris nimic. Dacă jumătate din rânduri intră în sistem și jumătate nu, trebuie să identifici care e care, să ștergi ce a intrat greșit și să pornești din nou.
Dacă în schimb pasul de validare rulează pe tot fișierul înainte de orice scriere, ai o singură decizie: fișierul e valid și intră tot, sau nu e valid și nu intră nimic. Starea sistemului rămâne curată.
Lista de validări minime înainte de scriere:
- Cheia de deduplicare e prezentă și unică pe toate rândurile
- Câmpurile numerice sunt numerice, în intervalul așteptat și cu separatorul corect
- Câmpurile obligatorii nu sunt goale sau null
- Textele sunt trimuite și normalizate (majuscule, diacritice, dacă contează)
- Valorile din liste fixe (tip, categorie, status) sunt în lista permisă
Import automat de date: principiul unui singur rând
Importă primul rând din fișier. Oprește-te. Verifică-l câmp cu câmp în sistem. Dacă totul e corect, continuă cu restul.
Cinci minute acum înseamnă că nu pierzi o zi de curățenie ulterior. Import automat de date nu înseamnă import fără verificare: înseamnă că verificarea e automată și rapidă, nu că e absentă. Un rând de test corect înseamnă că structura fișierului e cea așteptată. Dacă primul rând trece toate validările, restul au șanse mari să treacă și ele.
Același principiu se aplică la fișiere noi de la un partener nou sau la prima versiune dintr-un format pe care nu l-ai mai văzut. Nu ai cum să știi ce obiceiuri are exportatorul lor dacă nu ai văzut un eșantion.
Folosește importatorul din sistem, dacă există
Dacă sistemul tău are deja un mecanism de import prin interfață sau prin API, folosește-l. Nu scrie date direct în baza de date prin SQL sau prin tool extern. Importatorul oficial aplică aceleași validări ca la înregistrările normale: câmpuri obligatorii, formate acceptate, relații între tabele.
O înregistrare creată direct în baza de date poate să lipsească dintr-o relație și să fie invizibilă în interfață. Datele există tehnic, dar nu apar nicăieri. Găsești asta greu.
Dezavantajul importatorului oficial e că e mai lent. Dacă ai 50.000 de rânduri, diferența e reală. La 500 de rânduri, nu contează. Alege corectitudinea în fața vitezei, mai ales la primele importuri dintr-o sursă nouă.
Ce lași în urmă pentru refacere
Păstrează fișierul original primit, nemodificat. Păstrează fișierul corectat, separat, cu un nume care indică versiunea și data. Notează undeva lista de identificatori creați în sistem în acel import: dacă ceva e greșit și trebuie șters, știi ce să cauți fără să scanezi tot.
Dacă sistemul nu are undo nativ, scriptul de import trebuie să scrie un fișier de rollback: fiecare operație în ordine inversă, gata să fie rulat dacă ceva merge prost. Fără el, „dăm înapoi” înseamnă o zi de muncă manuală. Cu el, durează un sfert de oră.
Cheia provizorie și duplicatele la importul următor
Uneori nu ai cheia finală la primul import. Importezi cu un identificator provizoriu, sistemul creează înregistrările. Peste o săptămână primești fișierul cu identificatorul real și faci un al doilea import. Dacă nu ai legat explicit înregistrările provizorii de cele noi, importul al doilea creează duplicate.
Se rezolvă înainte de primul import, nu după al doilea. Planifici de la început cum identifici înregistrările provizorii (un flag, un prefix, o coloană suplimentară) și cum le actualizezi când vine cheia reală. Fără planul ăsta, curățenia după import costă mai mult decât construirea lui.
Construim astfel de sisteme de import automat de date pentru firme mici și medii din România. Dacă fișierele pe care le primești arată altfel de fiecare dată și importul manual durează prea mult, scrie-ne la office@seoclub.ro. Prima discuție e despre câmpurile din fișierele tale, nu o demonstrație generică.
Poți vedea și cum abordăm alte procese repetitive, de la chatboți pentru documente interne la raportarea fiscală SAF-T pregătită automat.
O sursă utilă dacă lucrezi cu fișiere CSV: RFC 4180 descrie formatul standard, inclusiv ce e opțional și ce rămâne la latitudinea exportatorului, adică exact de unde vin inconsistențele.




