【发布时间】:2011-04-24 05:24:47
【问题描述】:
是否有针对 SQL Server 的特定命令以插入大量行,条件为:如果数据库中已存在一行,则在插入过程中不会重复它?
已编辑
在 sqlbulkcopy 中,我想避免异常,因为表格中已经有一行?
【问题讨论】:
标签: sql sql-server duplicate-data insertion
是否有针对 SQL Server 的特定命令以插入大量行,条件为:如果数据库中已存在一行,则在插入过程中不会重复它?
已编辑
在 sqlbulkcopy 中,我想避免异常,因为表格中已经有一行?
【问题讨论】:
标签: sql sql-server duplicate-data insertion
您可以为此使用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);
编辑虽然您在编辑中说这是为了批量复制?您还可以调查索引上的“忽略重复键”选项。
【讨论】:
如何在 T-SQL 中做到这一点是discussed here(虽然文章有点老了)
【讨论】: