Will der Fragesteller wirkklich seine Stored Procedure verwenden? Ist doch blöd.
So gehts in ein paar Sekunden.
Code:
--
CSV-Datei importieren
BULK INSERT #Temp
FROM 'c:\file.csv'
WITH (
FIELDTERMINATOR = ';',
ROWTERMINATOR = '\n'
)
-- Index auf Primärschlüssel setzen (kann die Sache noch ordentlich beschleunigen)
CREATE INDEX Temporaer ON #Temp (Key)
-- Existierende Daten ersetzen
UPDATE ZielTabelle SET Feld = #Temp.Inhalt,
NochEinFeld = #Temp.NochEinInhalt
FROM Temp WHERE #Temp.Key = ZielTabelle.Key
-- Neue Daten anhängen
INSERT INTO ZielTabelle
(Feld1, NochEinFeld)
SELECT Inhalt, NochEinInhalt
FROM #Temp LEFT JOIN
ZielTabelle ON #Temp.Key = ZielTabelle.Key
WHERE ZielTabelle.Key IS NULL