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

标签 sql-server image ssis

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

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

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

最佳答案

如果我对问题的理解正确,您想使用 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 枚举器的变量集中引用的文件。

关于sql-server - 将物理目录中的图像移动到 sql server 图像类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13356253/

相关文章:

android - 位图和 BufferedImages 之间的区别

c# - 如何在 C# 中创建存储过程,然后将其*保存*到 SQL Server?

sql-server - 以逗号分隔格式分组数据

sql-server - 大事务日志如何影响性能?

sql-server - 如何在 SSIS 变量中存储 'fully qualified' 和 'name only' 文件名

sql - 在SSIS中将带有逗号分隔符的单列数据拆分为多列

excel - 导入带有前导空单元格的 excel 删除逗号

c# - 将 csv 文件从 Azure Blob 插入 Azure SQL

image - 导轨 3.1 : Dynamic linking to images in the asset pipeline?

image - 如何通过 WCF 传输图像文件?