A Mitch sottolinea le funzioni di copia in blocco (SqlBulkCopy
, bcp
e BULK INSERT
) gestisce solo gli inserti, non gli aggiornamenti.
L'approccio normale al problema consiste nell'eseguire il caricamento in blocco in due (o più) passaggi:prima si utilizzano gli inserimenti in blocco per caricare i dati in una tabella di staging, quindi si utilizza una query per inserire/aggiornare i record nelle tabelle principali in base a i dati nelle tabelle di staging, ad esempio:
INSERT INTO MyTable
(Column1, Column2, [etc...])
SELECT Column1, Column2, [etc...]
FROM Test_Staging
WHERE [Some condition]
Vedi SQL SERVER – Inserisci dati da una tabella a un'altra tabella per informazioni su come inserire in una tabella da un'altra tabella - è anche possibile fare un join in un AGGIORNAMENTO, ma sto lottando per trovare una buona risorsa su questo.