Вставка SQL без дублирования - PullRequest
1 голос
/ 12 октября 2010

Существует ли специальная команда для SQL Server для вставки большого количества строк с условием: если строка уже существует в базе данных, не дублирует ее во время вставки?

Отредактировано

В sqlbulkcopy я бы хотел избежать исключения , поскольку строка уже есть в таблице?

Ответы [ 2 ]

3 голосов
/ 12 октября 2010

Для этого вы можете использовать команду MERGE.Пример использования.

CREATE TABLE #A(
 [id] [int] NOT NULL PRIMARY KEY CLUSTERED,
 [C] [varchar](200) NOT NULL)


    MERGE #A AS target
    USING (SELECT 3, 'C') AS source (id, C)
    ON (target.id = source.id)
    /*Uncomment for Upsert Semantics
       WHEN MATCHED THEN 
        UPDATE SET C = source.C */
    WHEN NOT MATCHED THEN    
        INSERT (id, C)
        VALUES (source.id, source.C);

Редактировать Хотя вы говорите в своем редактировании, что это для массового копирования?Вы также можете исследовать опцию «Игнорировать повторяющиеся ключи» в своем индексе.

1 голос
/ 12 октября 2010

Как это сделать в T-SQL обсуждается здесь (хотя статья немного устарела)

...