【问题标题】:SSIS How to extract files names of multiple folders using a Foreach Loop Container?SSIS如何使用Foreach循环容器提取多个文件夹的文件名?
【发布时间】:2020-07-28 11:55:11
【问题描述】:

我尝试通过 SSIS 提取文件夹名称中包含的文件的名称并加载到 SQL Server 表中。文件夹名称已存储在 SSIS 包变量中。

我想使用一个 Foreach 循环容器(对于每次迭代);

1)在输入中取一个文件夹名称(存储在对象变量中)。
2)读取文件夹的所有文件名。
3) 将文件名加载到 SQL Server 目标表。

有人有解决办法吗?

提前致谢。

【问题讨论】:

    标签: ssis ssis-2012


    【解决方案1】:

    你说你有一个对象变量中的目录。

    1. 添加一个 foreach 循环(选择 ADO 对象)并将变量设置为名为 targetDirectory 的字符串变量
    2. 添加数据流
    3. 添加脚本组件源
    4. 添加一个名为 fileName 的输出作为字符串类型
    5. 将变量 targetDirectory 作为读取传递
    6. 将以下代码添加到 CreateOuputRows

      foreach(string fName in System.IO.Directory.GetFiles(Variables.targetDirectory))
      {
         Output0Buffer.AddRow();
         Output0Buffer.fileName = fname;
      }
      
    7. 继续将数据流向您的目的地。

    参考https://docs.microsoft.com/en-us/dotnet/api/system.io.directory.getfiles?view=netframework-4.8

    【讨论】:

    • 感谢您的回复。它不工作。 “当前上下文中不存在名称“OutputBuffer”。
    • 对不起,它是 Output0Buffer。我只是在没有 SSIS 的情况下输入了所有这些内容。
    • 让我实际提供一个使用双 foreach 的完整 SSIS 示例
    • 好的,谢谢。 “它是Output0Buffer”是什么意思?在我的 C# 程序中,它提到上下文中不存在 Output0Buffer。
    • 你做了第 4 步吗?
    【解决方案2】:

    我的其他答案很好,并且更接近我在 C# 中完全做到的方式。

    但是,在 SSIS 中,您可以只使用提供的对象来完成:

    【讨论】:

    • 在你的第一个 ForEach: Collection -> Enumerator : Foreach ADO Enumerator 中? (右)+表情:你写什么? + ADO 对象源变量:?变量映射:? |||||在您的第二个 ForEach (sub For Each) Collection -> Enumerator : Foreach ADO Enumerator 中? (对吗?) + 表情:你在写什么? + ADO 对象源变量:?变量映射:?
    • 你的两个 foreach 循环是 Foreach ADO Enumerator?
    • 第一个是基于您的对象变量的 ADO 对象。第二个是基于 foreach #1 变量的文件夹表达式的每个文件。
    • 谢谢。我在帖子上分享图片。你能告诉我它是否正确吗?
    • 1) 在第一个 For Each 中,我将 Foreach ADO Enumerator 然后 expresion : nothing(空白)和 ADO Object 源变量放在 FolderList (变量类型 Object,包含所有目录)。变量映射:User::FolderCurrent 和 Index 为 0。是否正确?
    猜你喜欢
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    • 1970-01-01
    相关资源
    最近更新 更多