Я работаю над хранимой процедурой, которая будет массово вставлять данные из .csv в таблицу, но процедура не должна «вставлять дубликаты». Некоторые из строк могут уже быть в таблице, но некоторые значения могли измениться, я думаю, здесь подойдет UPSERT
, но как насчет удаления записей, которые уже существуют в таблице, но не существуют в .csv ?
Конечная цель точно такая же, как очистка всей таблицы и вставка в нее всех данных .csv, но поскольку .csv имеет миллионы записей, и лишь несколько сотен из них меняются время от времени , Я предполагаю, что «обновление» таблицы происходит быстрее, чем ее очистка.
DECLARE @ssql NVARCHAR(4000) = 'BULK INSERT gl_ip_range FROM '''
+ @psTempFilePath
+
''' WITH ( FIELDTERMINATOR ='','', ROWTERMINATOR =''\n'', FORMAT =''CSV'', FIRSTROW =2 )'
;
В настоящее время я использую приведенный выше код вместе с очисткой таблицы перед вставкой. таблица и вставка миллионов записей будет быстрее, чем делать то, что я пытаюсь достичь?