ProgrammatieData Engineer

Hoe organiseer je bulkinsert van gegevens uit een bestand naar een SQL-tabel om maximale prestaties te garanderen en de juistheid van de gegevens te waarborgen? Welke tools moeten worden gebruikt in verschillende databasesystemen en wat zijn de nuances van foutcontrole?

Slaag voor sollicitatiegesprekken met de Hintsage AI-assistent

Antwoord.

Voor bulkinsert van grote hoeveelheden gegevens worden gespecialiseerde commando's en tools gebruikt: BULK INSERT, COPY, LOAD DATA INFILE, externe tools zoals bcp (SQL Server), psql (PostgreSQL), en ook ETL-tools.

Belangrijke punten:

  • Gebruik CSV/TXT-indelingen zonder onnodige conversies.
  • Zet triggers en indexen uit tijdens de import, als de gegevens geen controle vereisen — dit verhoogt de snelheid.
  • Voer controles en validatie van referentiële integriteit UIT VOOR en/of NA de import.
  • Importeer naar een tijdelijke tabel, valideer, en doe daarna een bulkinsert naar de hoofdtafel.
  • Probeer de gegevens in batches op te splitsen als dat wordt ondersteund.
  • Controleer retourcodes/logs — bulkinsert kan fouten overslaan.

Voorbeeld voor PostgreSQL:

COPY staging_table (id, name, age) FROM '/path/to/data.csv' DELIMITER ',' CSV HEADER; -- Gegevenscontrole, overzetten naar productietabel na validatie INSERT INTO prod_table (id, name, age) SELECT id, name, age FROM staging_table WHERE age >= 0 AND name IS NOT NULL;

Vraag met een valstrik.

Vraag: Waarom kan er na een bulkinsert in een grote tabel met een index een scherpe daling van de prestaties van volgende bewerkingen worden waargenomen?

Antwoord: Omdat bulkinsert de tabel rechtstreeks vuldt, worden de indexen pas na de hoofdimport opnieuw opgebouwd/geupdatet, wat de tabel kan blokkeren en middelen kan consumeren. Het wordt aanbevolen om secundaire indexen tijdens de import uit te schakelen en deze erna opnieuw op te bouwen of te splitsen in batches.


Verhaal

In een logistiek project werden miljoenen rijen geïmporteerd via BULK INSERT zonder een tijdelijke tabel – ongeldige gegevens "vervuilden" de indices met ongeldige informatie, waardoor het door FK en check-constraints niet mogelijk was om simpelweg een deel van de slechte rijen "terug te draaien". De gegevens moesten handmatig worden opgeschoond.


Verhaal

In een bedrijfsservice verhoogde bulkinsert de importtijd met 10 keer, omdat de secundaire indexen niet werden uitgeschakeld tijdens de upload, en hun structuur bij elke stap opnieuw werd berekend.


Verhaal

In een fintech-product leidde de upload van grote bestanden via bulkinsert ertoe dat niet alle rijen werden geladen vanwege stille fouten, omdat foutcodes niet goed werden verwerkt - een deel van belangrijke informatie ging verloren, en werd pas na enkele dagen bij controle met externe bronnen ontdekt.