将物理目录中的图像移动到sql server映像类型

时间:2012-11-13 06:07:42

标签: sql-server image ssis

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

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

我的数据库中有文件后,我将从hd。

中删除该文件

1 个答案:

答案 0 :(得分:1)

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

数据流任务

您的数据流任务将负责将文件实际导入数据库。您的方法与Import varbinary data漂亮图片版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枚举器变量集中引用的文件。