Für den Massendatenimport (Bulk Insert) großer Datenmengen werden spezialisierte Befehle und Werkzeuge verwendet: BULK INSERT, COPY, LOAD DATA INFILE, externe Werkzeuge wie bcp (SQL Server), psql (PostgreSQL) sowie ETL-Tools.
Beispiel für PostgreSQL:
COPY staging_table (id, name, age) FROM '/path/to/data.csv' DELIMITER ',' CSV HEADER; -- Daten überprüfen, nach Validierung in die Produktions-Tabelle übertragen INSERT INTO prod_table (id, name, age) SELECT id, name, age FROM staging_table WHERE age >= 0 AND name IS NOT NULL;
Frage: Warum kann es nach einem Bulk Insert in eine große Tabelle mit Index zu einem plötzlichen Leistungsabfall bei nachfolgenden Operationen kommen?
Antwort: Weil Bulk Insert die Tabelle direkt auffüllt, und die Indizes erst nach dem Hauptimport neu erstellt/aktualisiert werden, was die Tabelle blockieren und Ressourcen verbrauchen kann. Es wird empfohlen, sekundäre Indizes während des Imports zu deaktivieren und sie nach Abschluss neu zu erstellen, oder die Daten in Batches zu unterteilen.
Geschichte
Im Logistikprojekt wurden Millionen von Zeilen über BULK INSERT ohne temporäre Tabelle geladen — ungültige Daten „verstopften“ die Indizes mit ungültigen Informationen, wodurch die problematischen Zeilen wegen FK- und Check-Constraints nicht einfach „rückgängig gemacht“ werden konnten. Die Daten mussten manuell bereinigt werden.
Geschichte
Im Unternehmensdienst erhöhte der Bulk Insert die Importzeit um das 10-fache, weil während des Ladens die sekundären Indizes nicht deaktiviert waren und ihre Struktur bei jedem Schritt neu berechnet wurde.
Geschichte
Im Fintech-Produkt erlaubte der Bulk Insert beim Laden großer Dateien nicht das Laden aller Zeilen aufgrund von Silent-Fehlern, da die Fehlercodes nicht korrekt behandelt wurden — ein Teil wichtiger Informationen ging verloren und wurde erst nach Abgleich mit externen Quellen nach mehreren Tagen festgestellt.