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

如何在SSIS中基于RecordSet执行单条DELETE FROM语句批量删除数据?

不用拼接字符串实现批量删除的SSIS方案

方案1:临时表关联删除(无需脚本拼接)

  1. 用Execute SQL Task创建本地临时表,结构匹配CSV的id列:
    CREATE TABLE #TempIDs (id INT);
    
  2. 新增数据流任务,将CSV中的id数据直接写入这个临时表(用OLE DB Destination,目标选择临时表)。
  3. 再添加Execute SQL Task,执行关联删除语句:
    DELETE FROM YourTargetTable
    WHERE id IN (SELECT id FROM #TempIDs);
    
    注意保持全程使用同一个OLE DB连接管理器,临时表会在连接上下文内共享,无需额外拼接操作。

方案2:SQL Server表值参数(TVP,高效无拼接)

若你的数据库是SQL Server,这是更优雅的实现方式:

  1. 在SQL Server中创建自定义表类型,匹配id列类型:
    CREATE TYPE IDList AS TABLE (id INT);
    
  2. 在SSIS中创建Object类型变量(比如User::IDRecordSet),通过数据流将CSV数据加载到该RecordSet变量中。
  3. 配置Execute SQL Task:
    • 连接管理器选择你的SQL Server连接,将连接的RetainSameConnection属性设为True
    • SQL语句填写:
      DELETE FROM YourTargetTable
      WHERE id IN (SELECT id FROM ?);
      
    • 进入“参数映射”,将User::IDRecordSet变量映射到参数,参数名称设为0,数据类型选SQL_VARIANT,方向为Input
    • 常规选项卡中,将“ResultSet”设为None

以上两种方案均无需编写C#脚本或手动拼接IN子句字符串,完全依托SSIS内置组件实现,符合你学习SSIS用法的需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 03:20:59