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.
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: 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.