1

是否有针对 SQL Server 的特定命令,以便插入大量具有以下条件的行:如果数据库中已经存在一行,则在插入过程中不会复制它?

已编辑

sqlbulkcopy中,我想避免异常,因为表中已经有一行?

4

2 回答 2

3

您可以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);

编辑虽然您在编辑中说这是为了批量复制?您还可以调查索引上的“忽略重复键”选项。

于 2010-10-12T10:02:22.443 回答
1

这里讨论了如何在 T-SQL 中执行此操作(虽然文章有点旧)

于 2010-10-12T09:59:40.487 回答