SSIS - 仅移动 SQL 命令中返回的文件名

use*_*443 5 ssis

我有一个 SQL 语句,它返回 600 个 PDF 文件名,我需要用它来将文件的副本从文件夹中移到新文件夹中(SQL 中的文件名是文件夹中 PDF 文件的确切名称)。

我设置了一个执行 SQL 语句,它将 PDF 名称结果集传递给一个变量。

如何使用此变量传递给文件系统任务以仅复制 SQL 语句中返回的 PDF 文件名并传递给变量?

谢谢,

我也收到了一个错误

dig*_*ron 5

这是 SSIS 中一个非常简单的设计模式。一般来说,您将从 中获取文件名列表Execute SQL Task,设置Foreach Loop Container来处理每个文件,并File System Task在循环中设置 。

首先,您需要确保拥有以下变量:

变量列表

我正在E:\Import\用作我的源文件夹。我希望我的所有文件都在那里。您可以将其更改为文件所在的文件夹。我想将文件移动到子文件夹中,所以我DestinationFolderE:\Import\Internal\. 再次,更改它以满足您的需要。

此外,您可以看到我们有一个Filenames类型为 的变量System.Object。这是将保存 SQL 查询结果的 ADO 对象。Filename当我们通过循环时,字符串变量将用于存储每个文件名。

SourcePathDestinationPath我们要配置到一个表达式来填充。我们将把文件夹名称与我们的文件名连接起来。为此,请打开变量窗口,然后单击SourcePath。然后编辑Properties和 设置EvaluateAsExpressionTrue,然后将表达式设置为@[User::SourceFolder] + @[User::Filename]DestinationPath使用@[User::DestinationFolder]表达式中的变量对 执行相同操作。你应该最终得到你的两个*Path变量看起来像这样: 源路径 源路径表达式 目的地路径 目标路径表达式

现在我们可以配置Execute SQL Task. 确保您将该ResultSet值设置为Full result set并将结果映射为Result Name等于0您的 ADO 对象变量Filenames执行SQL 结果集

接下来,创建一个Foreach Loop Container并将其配置为使用该Foreach ADO Enumerator类型并将其指向您的Filenames变量。 Foreach

转到Variable Mappings并确保映射User::FilenameIndex 0Foreach变量映射

最后,创建一个File System Task并将其放入循环容器中。然后将其配置为通过*Path适当的操作使用您的变量。 FST

完成后,您应该有一个如下所示的包: 最终包装