Per l'importazione massiccia (bulk insert) di grandi volumi di dati si utilizzano comandi e utility specializzate: BULK INSERT, COPY, LOAD DATA INFILE, strumenti esterni come bcp (SQL Server), psql (PostgreSQL), oltre a strumenti ETL.
Esempio per PostgreSQL:
COPY staging_table (id, name, age) FROM '/path/to/data.csv' DELIMITER ',' CSV HEADER; -- Verifica dei dati, trasferimento nella tabella di produzione dopo validazione INSERT INTO prod_table (id, name, age) SELECT id, name, age FROM staging_table WHERE age >= 0 AND name IS NOT NULL;
Domanda: Perché dopo un bulk insert in una grande tabella con indice può esserci un improvviso calo delle prestazioni nelle operazioni successive?
Risposta: Perché il bulk insert riempie la tabella direttamente, e gli indici vengono ricostruiti/aggiornati solo dopo l'importazione principale, il che può bloccare la tabella e consumare risorse. È consigliato disattivare gli indici secondari durante l'importazione e ricrearli al termine, oppure suddividere in batch.
Storia
Nel progetto di logistica sono stati caricati milioni di righe tramite BULK INSERT senza una tabella temporanea — i dati non validi "inchiodavano" gli indici con informazioni non valide, dopo il che, a causa di FK e vincoli di controllo, non è stato possibile semplicemente "annullare" parte delle righe errate. I dati sono stati puliti manualmente.
Storia
Nel servizio aziendale, il bulk insert ha aumentato il tempo di importazione di 10 volte, perché durante il caricamento non erano stati disattivati gli indici secondari e la loro struttura veniva ricalcolata a ogni passaggio.
Storia
Nel prodotto fintech, durante il caricamento di grandi file, il bulk insert ha permesso di caricare solo alcune righe a causa di errori silenziosi, poiché i codici di errore non erano stati gestiti correttamente — parte delle informazioni importanti è andata persa, e questo è stato scoperto solo dopo confronti con fonti esterne dopo alcuni giorni.