Я использую SQLBulkCopy для загрузки массивных данных в таблицу Sql. Таблица содержит идентификатор столбца как столбец Identity. поэтому он не позволит записывать запись в формате dulicate, как вы знаете.
Консодер, что у меня есть 10 строк для вставки SQLBulkCopy, среди 10 записей у нас есть 2 строки дублирования ...
Мои вопросы: есть ли способ пропустить эти повторяющиеся строки при вставке строк с помощью SQLBulkCopy?
SqlBulkCopy имеет очень ограниченные средства обработки ошибок, по умолчанию он даже не проверяет ограничения.
Тем не менее, его быстро, действительно очень быстро.
Если вы хотите обойти проблему дублирования ключа и определить, какие строки дублируются в пакете. Один из вариантов:
Этот процесс будет эффективно работать, если вы вставляете огромные наборы, а размер исходных данных в таблице не слишком велик.
Не могли бы вы расширить свой вопрос, включив в него весь контекст проблемы.
РЕДАКТИРОВАТЬ
Теперь, когда у меня есть еще какой-то контекст, вы можете пойти по этому пути:
Этот процесс очень близок к поездкам в оба конца, и учитывая, что ваши спецификации должны быть очень быстрыми;
Совсем иной подход, чем предлагалось; Выполните SqlBulkCopy
и поймайте полученное SqlException :
Violation of PRIMARY KEY constraint 'PK_MyPK'. Cannot insert duplicate
key in object 'dbo.MyTable'. **The duplicate key value is (17)**.
Затем вы можете удалить все элементы из вашего источника из ID 17, первой записи, которая была дублирована. Я делаю предположения здесь, которые относятся к моим обстоятельствам и, возможно, не к вашим; то есть , что дублирование вызвано теми же самыми данными из ранее не удалось SqlBulkCopy
из - за ошибок SQL / сети во время загрузки.