Назад | Перейти на главную страницу

bcp import file как игнорировать дубликаты?

Я хочу импортировать файл csv в таблицу базы данных sql server 2008 R2 с помощью bcp с помощью такой команды:

bcp Database..TableName in TableName.csv -n -T -E -S localhost

Моя проблема: таблица содержит одну строку, которая также находится в файле csv (строка по умолчанию вставляется при создании базы данных).

Могу я как-то указать bcp игнорировать эту строку? Я пробовал -m для максимального количества ошибок, но bcp все равно прерывается, когда попадает в уже существующую запись (первичный ключ).

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

bcp не имеет сложной обработки ошибок для подобных ситуаций.

Я думаю, что ваши альтернативы:

Удалите одну повторяющуюся строку из вашего csv.

Напишите пакет DTS / SSIS, который обеспечит более сложную обработку ошибок.

bcp во временную таблицу и используйте t-sql для вставки из временного в действующее, используя левое соединение для проверки существования строки. Что-то вроде:

insert into TableName
    (column1, column2, ...)
    select t1.column1, t1.column2, ...
        from TempTableName t1
            left join TableName t2
                on t1.primarykey = t2.primarykey
        where t2.primarykey is null /* row does not already exist */