SSIS 中的导入列转换

SSIS 中的导入列转换用于将数据从文本文件导入到数据流中。并进行一些操作,然后将数据转发到目标。这里的数据包括二进制文件、图像、媒体或任何过于庞大的文档。SSIS 导入列转换输出列的数据类型必须是 DT_TEXT、DT_NTEXT 或 DT_IMAGE。

例如,我们将产品详细信息填入表中。我们在制造部门有产品图片,每个单独的商店都在文本文件中放置了产品评论。在这种情况下,我们使用 SSIS 导入列转换将图片和评论带入数据流。接下来,将它们与产品详细信息合并并存储在数据仓库中。让我们看一个简单的例子以便更好地理解。

SSIS 导入列转换示例

在本例中,我们将使用 SSIS 导入列转换将本地硬盘上的几张图片传输到SQL Server数据库列中。

提示:请参阅导出列转换文章以进行了解。它展示了如何将 SQL Server 中的图像、二进制文件和媒体导出到文件系统。有关更多转换 >> 点击此处

为了将图像导入数据库,我们需要一个存储图像文件和文件路径的表。让我们创建一个名为 PHOTOSOURCE 的表。

CREATE TABLE PHOTOSOURCE
(
  PhotoID INT NOT NULL IDENTITY (1, 1),
  PhotoSource NVARCHAR (200),
  Photo IMAGE
)
GO
Source Table

在这里,我们有一些 JPEG 图像和名为 photo source 的文件,其中包含所有图像路径。

Image Paths Text File

配置 SSIS 中的导入列转换

步骤 1:启动 BIDS,然后从工具箱将数据流任务拖放到控制流中。接下来,将其重命名为 Import Column Transformation。

IMPORT COLUMN TRANSFORMATION IN SSIS 2

双击它,它将打开数据流选项卡。

步骤 2:将平面文件源从工具箱拖放到数据流区域。双击数据流区域中的平面文件源将打开平面文件源编辑器以选择文本文件数据。

由于我们之前没有创建任何平面文件连接管理器,请单击“新建”按钮创建一个。

IMPORT COLUMN Flat File Source Editor 3

单击“新建”按钮后,将打开平面文件连接管理器编辑器来配置连接管理器。

单击“浏览”按钮以在本地硬盘驱动器上选择文本文件。

IMPORT COLUMN TRANSFORMATION Flat File 4

从上面的屏幕截图中,您可以观察到我们正在选择位于本地硬盘驱动器上的 PHOTO SOURCE.txt 文件。

IMPORT COLUMN TRANSFORMATION 5

从上面的屏幕截图中,您可以看到我们取消选中了“第一数据行中的列名”选项,因为第一行没有列名。

步骤 3:单击“列”选项卡以验证列。如您在下图中看到的,我们只有一列。

IMPORT COLUMN TRANSFORMATION IN SSIS 6

单击“确定”,然后将 SSIS 工具箱中的导入列转换拖放到数据流区域。

步骤 4:现在将蓝色箭头从平面文件源拖到导入列转换,以对源数据执行转换。双击 SSIS 导入列转换以进行配置。

IMPORT COLUMN TRANSFORMATION IN SSIS 7

步骤 5:在第一个页面,即组件属性选项卡中,您无需执行任何操作。如果需要,可以更改名称。选择输入列选项卡,您将在其中看到可用的源列。选中文件路径列。

IMPORT COLUMN TRANSFORMATION IN SSIS 8

步骤 6:现在选择 SSIS 导入列转换的输入列选项卡。导入列输入已设置为选定的源列输入。

IMPORT COLUMN TRANSFORMATION IN SSIS 9

从上面的屏幕截图中,您可以观察到我们将列 0 的名称重命名为 Image Column。

步骤 7:选择 SSIS 导入列转换的输入和输出属性选项卡。

IMPORT COLUMN TRANSFORMATION IN SSIS 10

从上图中,您可以观察到在导入列输入中,我们有输入列(Image Column),但没有输出列。因此,选择导入列输出,然后单击“添加列”添加一个输出列。

IMPORT COLUMN TRANSFORMATION IN SSIS 11

从上面的 SSIS 导入列转换屏幕截图中,您可以看到我们创建了一个名为 Photo 的输出列,数据类型为 DT_IMAGE。

选择新创建的输出列名称 Photo 的 LineageID(即 24)。对您而言,它可能是一个不同的值。不用担心。

IMPORT COLUMN TRANSFORMATION IN SSIS 12

步骤 8:我们必须为 SSIS 导入列转换执行一个关键步骤。我们必须复制上面屏幕截图中突出显示的 LineageID 24。将其粘贴到 Image Column(导入列输入)中的 FileDataColumnID 属性中。然后按“确定”。

IMPORT COLUMN TRANSFORMATION IN SSIS 13

ExpectBOM(字节顺序标记):如果数据具有 DT_NTEXT,则会期望 BOM。

现在,让我们配置 OLE DB 目标,并将连接设置为您创建了名为 PHOTO SOURCE 的表的数据库。

步骤 9:将 OLE DB 目标从工具箱拖放到数据流区域。接下来,将蓝色箭头从导入列转换拖到 OLE DB 目标。

现在,我们需要提供目标的服务器、数据库和表详细信息。因此,双击 OLE DB 目标并提供所需的信息。

IMPORT COLUMN TRANSFORMATION IN SSIS 14

从上面的屏幕截图中,您可以观察到我们在数据库中选择了之前创建的表,即 PHOTOSOURCE 表。

步骤 10:单击映射选项卡以将输入列映射到目标列。

IMPORT COLUMN TRANSFORMATION 15
  • PhotoID 是标识列。因此,它将自动插入。
  • Image Column 包含图像的路径。因此,我们将这些路径详细信息存储在 Photosource 列中。
  • Photo 是位于本地硬盘驱动器上的图像。因此,我们将它映射到 photo 列(图像数据类型)。

现在,让我们执行 SSIS 导入列转换任务。

IMPORT COLUMN TRANSFORMATION IN SSIS 16

SSIS 中的导入列转换任务已成功执行。

让我们打开Management Studio。接下来,编写以下语句来检查结果。

SELECT [PhotoID]
      ,[PhotoSource]
      ,[Photo]
 FROM [PHOTOSOURCE]
IMPORT COLUMN Destination