Van rommelige CSV naar werkende importfunctie met AI
De snelste manier om een importfunctie te bouwen is niet nog meer validatiecode schrijven, maar de CSV eerst door AI te laten opruimen. Zeker als je een importfunctie bouwen met AI wilt die niet bij rij 87 uit elkaar valt, loont het om eerst naar de data te kijken. De code is zelden het probleem. De aannames daaronder wel.
Een CSV ziet er op het oog simpel uit: kolommen, komma’s, regels. Maar in de praktijk zit er bijna altijd iets in dat niet klopt. Een BOM-markering aan het begin van het bestand, een puntkomma waar jij een komma verwacht, een kolom met postcodes die ineens als getal binnenkomt en de voorloopnullen kwijtraakt. Of erger, een cel met een komma in een tekstveld waardoor de hele rij verschuift. Daardoor lijkt het alsof je importfunctionaliteit brak is, terwijl de code gewoon tegen rommel aanloopt.
Waarom je importfunctie crasht bij rommelige CSV’s
Bij veel tools maak je eerst een nette testfile. Die werkt. Daarna uploadt iemand een export uit een pakket dat net iets anders omgaat met quotes, en dan is het feest. De meest voorkomende oorzaken die ik tegenkom zijn:
- Dubbele of lege regels aan het begin van het bestand
- Verschillende scheidingstekens in één bestand
- Encodings die niet UTF-8 zijn
- Datums in meerdere notaties door elkaar
- Decimalen met een komma in een Engelstalig systeem
- Tekstvelden met line breaks of komma’s zonder correcte quotes
De foutmelding is meestal laat en verwarrend. Ergens bij regel 200 krijg je ‘cannot parse value to int’, terwijl de oorzaak al in de eerste tien regels zit. Als je dan in de code extra validatie gaat stapelen, maak je het alleen maar langer, niet beter. Dan is het fijner om een stap terug te doen. Zie ook wat er misgaat als je AI-app foutmelding debuggen als je app crasht zonder oorzaak.
Stappenplan voor een importfunctie bouwen met AI
Hier is de werkwijze die voor mij het beste werkt. Niet meteen code genereren, maar eerst een profiel van de data laten maken.
1. Begin met een vieze steekproef
Pak niet de schone versie van de CSV. Pak een export van een echte gebruiker, of maak zelf een bestand met expres verkeerde rijen. Twintig tot vijftig rijen is genoeg. Zorg dat er in ieder geval een rij met een komma in een tekstveld staat, een lege rij, en een datum die anders is dan de rest. Zo test je meteen de randgevallen. Meer hierover staat in de AI-prototype testen checklist.
2. Laat AI eerst beschrijven, niet direct code schrijven
Plak de steekproef in je AI-editor en vraag om een dataprofiel. Die stap voelt als uitstel, maar het is sneller dan een halfuur debuggen. Een prompt die ik gebruik is ongeveer dit:
Hier is een CSV-export van 30 rijen. Vertel me eerst welke kolommen je ziet, welk scheidingsteken er wordt gebruikt, welke regels kapot zijn en waarom. Raad nog niets op. Schrijf nog geen importcode.
Zo krijg je inzicht in het bestand voordat je code laat schrijven. AI ziet patronen sneller dan jij in een ruwe tekstdump, maar alleen als je het de kans geeft om eerst te kijken.
3. Laat de opschoonfunctie klein en voorspelbaar
Vraag daarna om een losse functie die het bestand in stappen verwerkt. Niet één grote importfunctie die alles tegelijk doet. Bijvoorbeeld:
- Lees het bestand als ruwe tekst en verwijder de BOM-markering
- Detecteer het scheidingsteken op basis van de eerste regels
- Normaliseer de headers naar lower_snake_case
- Converteer kolommen apart met een duidelijke typebeschrijving
- Verzamel per rij wat er misging en welk veld dat was
Die losse stappen zijn makkelijker te testen dan een zwarte doos die regels teruggeeft.
4. Vraag om een foutenrapport, niet alleen een foutmelding
Laat AI een rapport teruggeven met rijnummer, kolom, ruwe waarde en reden. Dus niet alleen ‘import mislukt’, maar zoiets:
- Rij 18, kolom ‘geboortedatum’: ‘12/31/2024’ past niet bij verwachte notatie yyyy-mm-dd
- Rij 24, kolom ‘postcode’: ‘0112’ is geconverteerd naar 112 en verliest voorloopnul
- Rij 41, kolom ‘aantal’: leeg veld, verwacht getal
Met zo’n rapport zie je of het probleem bij de data ligt of bij je aanname. En je kunt besluiten om rijen over te slaan, te repareren of met een waarschuwing te importeren. Dat is een stuk prettiger dan een generieke uitzondering.
Waar je zelf scherp moet blijven
AI kan de rommel niet ruiken. Die ziet alleen tekst. Jij weet dat een telefoonnummer dat met een nul begint geen gewoon getal is. Jij weet dat ‘1,5’ in een Nederlandse export een komma als decimaal heeft, terwijl een Amerikaanse tool dat als duizend scheidingsteken kan lezen. Zet dat soort regels dus expliciet in je prompt.
Ook belangrijk: blijf controleren of een kolom wel echt uniek is voordat je hem als sleutel gebruikt. Een AI assistent kan makkelijk aannemen dat de eerste kolom een id is, terwijl het in de praktijk een klantnummer is dat per regio opnieuw begint. Dat soort aannames zijn precies de fouten die later terugkomen. Als je al eerder hebt meegemaakt dat een AI-code dezelfde bug terugbrengt, herken je het patroon: Hoe moet je een AI-code bug oplossen die blijft terugkomen?.
Veelgestelde vragen
Waarom crasht mijn import pas bij rij 87?
Meestal omdat daar voor het eerst een waarde staat die niet aan je verwachting voldoet. De code liep al die tijd op geluk. Met een foutenrapport per rij zie je wat er in rij 87 anders is, zonder dat je het hele bestand hoeft te lezen.
Kan ik AI gewoon de hele CSV laten opschonen?
Dat kan, maar dan moet je daarna wel controleren wat er is weggelaten of veranderd. Vraag daarom om een voor en na overzicht van gewijzigde rijen, of laat de functie een logboek teruggeven. Vertrouw niet blind op een bestand dat stiller is geworden.
Welke codetaal past bij een importfunctie met AI?
Dat hangt van je project af. Python en JavaScript zijn voor dit soort klusjes snel op te zetten, maar ook in een Laravel of Rails project kun je dezelfde stappen gebruiken. De volgorde is belangrijker dan de taal: eerst ruwe tekst, dan headers, dan per veld converteren, dan pas importeren.
Hoe voorkom ik dat voorloopnullen verdwijnen?
Door postcodes, telefoonnummers en andere numeriek ogende velden van tevoren als tekst te markeren. Zeg er expliciet bij dat je geen type wilt laten raden uit de eerste rij. Dat is een van de weinige regels die je beter hardcoded dan door AI laat interpreteren.
Wat als de CSV heel groot is?
Begin met een steekproef om de regels te bepalen. Daarna kun je dezelfde opschoonfunctie in batches toepassen. Voor een importfunctie bouwen met AI maakt de grootte niet meteen uit, de ruis in de data is het echte probleem.
Uiteindelijk is het verschil een kwestie van volgorde: eerst begrijpen, dan opschonen, dan pas importeren.

