At Mitch souligne les fonctions de copie en bloc (SqlBulkCopy
, bcp
et BULK INSERT
) ne gère que les insertions, pas les mises à jour.
L'approche normale de votre problème consiste à effectuer le chargement en bloc en deux étapes (ou plus) - vous utilisez d'abord des insertions en bloc pour charger vos données dans une table intermédiaire, puis utilisez une requête pour insérer/mettre à jour des enregistrements dans les tables principales en fonction de les données des tables intermédiaires, par exemple :
INSERT INTO MyTable
(Column1, Column2, [etc...])
SELECT Column1, Column2, [etc...]
FROM Test_Staging
WHERE [Some condition]
Voir SQL SERVER - Insérer des données d'une table à une autre table pour plus d'informations sur la façon d'insérer dans une table à partir d'une autre table - il est également possible de faire une jointure dans un UPDATE, mais j'ai du mal à trouver une bonne ressource à ce sujet.