Оператор SQL Server с массовой вставкой

Я работаю над проектом, в котором я использовал оператор массовой вставки для импорта пакетного файла .csv в таблицу.

У меня проблема в том, что некоторые записи дублируют то, что в настоящее время находится в таблице, в которую я хочу импортировать данные. Есть ли способ запустить оператор с массовой вставкой для проверки определенных строк, которые соответствуют строкам файла на основе определенных критериев?

Я уверен, что есть способ заставить эту работу работать, просто я ничего не имею в виду.


person Double U Tee    schedule 29.03.2017    source источник
comment
я почти уверен, что у нас уже есть этот случай где-то ... другим способом было бы просто вставить их и удалить дубликаты   -  person maSTAShuFu    schedule 29.03.2017
comment
Есть ли запрос, который я могу использовать для поиска и удаления дубликатов в одном пакете?   -  person Double U Tee    schedule 29.03.2017
comment
Группируйте, имея count () › 1, чтобы найти дубликаты   -  person maSTAShuFu    schedule 29.03.2017


Ответы (1)


Нет, оператор BULK INSERT оптимизирован для чистой скорости — он просто вставляет эти данные как можно быстрее — но он не позволяет проводить проверку или принимать решения во время импорта.

Обычный подход в таком случае заключается в массовой вставке ваших данных в промежуточную таблицу, а затем, после того, как это будет сделано, скопируйте только те строки, которые не являются дубликатами, в реальную таблицу данных и отбросьте все остальное.

Но это отдельный шаг - его нельзя выполнить во время массовой вставки....

person marc_s    schedule 29.03.2017
comment
Спасибо за ваш отзыв. Я младший уровень с sql. Есть ли запрос, который я могу использовать для поиска пакетных строк данных и либо печати всех дубликатов, либо удаления дубликатов на основе критериев соответствующего столбца? - person Double U Tee; 29.03.2017