Bei Mitch weist auf die Massenkopierfunktionen hin (SqlBulkCopy
, bcp
und BULK INSERT
) verarbeitet nur Einfügungen, keine Aktualisierungen.
Der normale Ansatz für Ihr Problem besteht darin, das Massenladen in zwei (oder mehr) Schritten durchzuführen. Zuerst verwenden Sie Masseneinfügungen, um Ihre Daten in eine Staging-Tabelle zu laden, und verwenden dann eine Abfrage, um Datensätze in die Haupttabellen basierend auf einzufügen / zu aktualisieren die Daten in den Staging-Tabellen, zum Beispiel:
INSERT INTO MyTable
(Column1, Column2, [etc...])
SELECT Column1, Column2, [etc...]
FROM Test_Staging
WHERE [Some condition]
Siehe SQL SERVER – Einfügen von Daten aus einer Tabelle in eine andere Tabelle Informationen zum Einfügen in eine Tabelle aus einer anderen Tabelle - es ist auch möglich, einen Join in einem UPDATE durchzuführen, aber ich habe Mühe, eine gute Ressource dazu zu finden.