Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

sqlbulkcopy, je souhaite écraser les lignes actuelles de la base de données

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.