You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用SSIS向含主键的SQL Server表插入数据的重复值问题

处理SSIS Excel增量导入SQL Server的正确方式

针对你遇到的重复插入导致主键冲突、或重定向错误后无新数据的问题,推荐以下两种标准处理方案:

方案一:用查找转换筛选新记录(数据流内处理)

这是SSIS中处理增量导入最常用的方式,直接在数据流里过滤掉已存在的记录:

  • 在Excel源组件后添加查找转换
  • 配置查找转换连接到目标SQL Server表,关联条件设为你的主键列(比如ID = ID)
  • 查找模式选择**“完全缓存”**(如果目标表数据量不大,性能最优;数据量大的话可选“部分缓存”或“无缓存”)
  • 将查找转换的**“未匹配的输出”**(即目标表中不存在的新记录)连接到OLE DB Destination组件,仅插入新数据
  • 匹配的输出(重复记录)可以直接忽略,或者重定向到日志表/文本文件,方便后续排查

方案二:用MERGE语句(SQL逻辑处理)

如果更倾向于用SQL来控制数据导入逻辑,可通过临时表中转:

  1. 先将Excel全量数据导入一个临时表(无主键约束,结构和目标表一致)
  2. 添加一个执行SQL任务,执行MERGE语句对比临时表和目标表的主键,仅插入新记录:
MERGE INTO YourTargetTable AS Target
USING YourTempTable AS Source
ON Target.PrimaryKeyColumn = Source.PrimaryKeyColumn
WHEN NOT MATCHED THEN
    INSERT (Column1, Column2, Column3, ...)
    VALUES (Source.Column1, Source.Column2, Source.Column3, ...);
  1. 执行完MERGE后,可以清空临时表,方便下次导入重复使用

补充说明

你之前遇到的“提示写入90行但实际无新增”问题,大概率是Excel中的数据全为已存在的重复记录,所有行都被错误输出重定向,目标组件实际未写入任何新数据。

内容的提问来源于stack exchange,提问作者glop11294484

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 14:50:33