在本文中,我们将介绍如何使用SSIS中的OLE DB命令转换来删除数据。请参考 OLE DB命令转换 文章了解如何使用OLE DB命令转换插入数据,以及参考 使用OLEDB命令转换更新数据 文章了解更新操作。
在开始设计SSIS SSIS 使用OLEDB命令转换删除数据包之前,我将向您展示数据库中的目标表。

如果观察到上述数据,我们会发现“英文描述”列数据存在NULL值。在此示例中,我们将使用SSIS OLE DB目标转换删除所有没有描述数据的所有行。
使用SSIS中的OLEDB命令转换删除数据
从工具箱将“数据流任务”拖放到控制流区域。并将其重命名为“使用SSIS中的OLEDB命令转换删除数据”。

双击它将打开数据流选项卡。接下来,从工具箱将“OLE DB源”和“OLE DB命令”转换拖放到数据流区域。

双击数据流区域中的“OLE DB源”将打开连接管理器设置,并允许我们选择所需的表。

用于此SSIS 使用OLEDB命令转换删除数据的 SQL 命令是:
SELECT [ProductKey]
,[EnglishProductName]
,[StandardCost]
,[Color]
,[ListPrice]
,[DealerPrice]
,[EnglishDescription]
FROM [Products]
WHERE [EnglishDescription] IS NULL
点击“列”选项卡以验证列并取消选中不需要的列。

将“OLE DB源”的输出箭头拖到“OLE DB命令”转换上,以对源数据执行转换。
步骤5:双击“OLE DB命令”转换将打开“高级编辑器”进行配置。
在“连接管理器”选项卡中,我们从列表中选择已创建的OLE DB连接。请参考 OLE DB连接管理器 文章来配置连接管理器。

在“组件属性”中,写入我们要执行的SQL语句。请选择“SqlCommand”属性,然后单击浏览按钮(...按钮)。

单击浏览按钮后,将打开一个“字符串值编辑器”窗口,用于编写SQL语句。在此示例中,我们正在删除products表中的值。

用于SSIS删除数据使用OLEDB命令转换的 SQL 语句是:
DELETE FROM [dbo].[Products] WHERE [ProductKey] = ?
在“列映射”中,将适当的列名分配给参数。

从上面的屏幕截图可以看出,Param_0代表第一个问号,即源中的[ProductKey]列。
单击“确定”以完成SSIS包中“使用OLEDB命令转换删除数据”的配置。让我们运行该包。

让我们打开 Management Studio 并检查是否已成功删除“无描述”的行。

现在,让我们看看最终数据。如果观察ProductKey列,它从210开始而不是1,因为OLE DB命令转换在之前删除了所有行。
