3

如何使用 SSIS 迭代目录中的图像文件并使用文件名运行查询以将图像插入 sql server?

我意识到使用 Foreach 文件枚举器可以循环文件并将文件名放入变量中。如何使用此变量运行查询以从表中的 hd 查找该文件名的记录,然后将图像导入我的 sql server 图像类型列?

一旦我的数据库中有文件,我将从 hd 中删除文件。

4

1 回答 1

1

如果我对问题的理解正确,您想使用 SSIS 将某个位置的所有文件扫描到 SQL Server 中吗?

数据流任务

您的数据流任务将负责将文件实际导入数据库。您的方法将与Import varbinary data Pretty picture version at insert XML file in SQL via SSIS中概述的相同

您的源将是作为源组件运行的脚本转换组件。它的工作是将所有文件名添加到数据流中。将第二个链接中的过滤器更改为 *.png (或任何您的过滤器),它应该可以工作。

对生成的文件名使用导入列组件。这会将文件指针添加到数据流中,以便可以将其导入数据库。您需要确保您的数据类型是 DT_IMAGE。即使您使用的是 varbinary(max)/varchar(max)/nvarchar(max) 在管道元数据的上下文中,它也将是 DT_IMAGE。

将所有这些数据路由到目标表中,您将导入文件数据。

文件清理

此时,您已经导入了所有这些数据,现在您想从磁盘中删除文件。假设您将文件名与图像位一起存储在数据库中,我将使用执行 SQL 任务来检索文件名列表。将输出类型从 None 更改为 Full Result Set 并将其存储到 Object 类型的变量中。

将 Foreach 枚举器连接到 SQL 任务的输出,在这里您需要“分解”结果。谷歌这个词,你会发现各种关于如何做到这一点的博客文章或以前的 SO 问题。最终结果将是一个文件名将从记录集对象中提取并分配给一个局部变量。

在 Foreach 枚举器中,使用文件系统任务并删除在 Foreach 枚举器的变量集中引用的文件。

于 2012-11-13T21:13:48.233 回答