使用SSIS中的OLEDB命令转换删除数据

在本文中,我们将介绍如何使用SSIS中的OLE DB命令转换来删除数据。请参考 OLE DB命令转换 文章了解如何使用OLE DB命令转换插入数据,以及参考 使用OLEDB命令转换更新数据 文章了解更新操作。

在开始设计SSIS SSIS 使用OLEDB命令转换删除数据包之前,我将向您展示数据库中的目标表。

如果观察到上述数据,我们会发现“英文描述”列数据存在NULL值。在此示例中,我们将使用SSIS OLE DB目标转换删除所有没有描述数据的所有行。

使用SSIS中的OLEDB命令转换删除数据

从工具箱将“数据流任务”拖放到控制流区域。并将其重命名为“使用SSIS中的OLEDB命令转换删除数据”。

Delete Data Using OLEDB Command Transformation in SSIS 1

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

Delete Data Using OLEDB Command Transformation in SSIS 2

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

用于此SSIS 使用OLEDB命令转换删除数据的 SQL 命令是:

SELECT [ProductKey]
      ,[EnglishProductName]
      ,[StandardCost]
      ,[Color]
      ,[ListPrice]
      ,[DealerPrice]
      ,[EnglishDescription]
FROM [Products]

WHERE [EnglishDescription] IS NULL

点击“列”选项卡以验证列并取消选中不需要的列。

Delete Data Using OLEDB Command Transformation in SSIS 4

将“OLE DB源”的输出箭头拖到“OLE DB命令”转换上,以对源数据执行转换。

步骤5:双击“OLE DB命令”转换将打开“高级编辑器”进行配置。

在“连接管理器”选项卡中,我们从列表中选择已创建的OLE DB连接。请参考 OLE DB连接管理器 文章来配置连接管理器。

Delete Data Using OLEDB Command Transformation in SSIS 5

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

Delete Data Using OLEDB Command Transformation in SSIS 6

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

Delete Data Using OLEDB Command Transformation in SSIS 7

用于SSIS删除数据使用OLEDB命令转换的 SQL 语句是:

DELETE FROM [dbo].[Products]

WHERE [ProductKey] = ?

在“列映射”中,将适当的列名分配给参数。

Delete Data Using OLEDB Command Transformation in SSIS 8

从上面的屏幕截图可以看出,Param_0代表第一个问号,即源中的[ProductKey]列。

单击“确定”以完成SSIS包中“使用OLEDB命令转换删除数据”的配置。让我们运行该包。

Delete Data Using OLEDB Command Transformation in SSIS 9

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

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