2017-05-31 105 views
0

我试图使用SSIS中的FTP任务和脚本任务将位于多个文件夹中的多个文件从FTP站点下载到特定驱动器上的多个文件夹中。我没有将这些文件下载到一个特定的文件夹中。我到处寻找,找不到任何好的信息。任何帮助深表感谢。谢谢。从sftp使用ssis将多个文件下载到多个文件夹

+0

您到目前为止尝试过什么? –

+0

文件和文件夹之间的链接是什么?他们是否共享一些命名部分?或者目标文件夹与每个文件的源文件夹名称相同?需要更多的信息。 –

+0

[下载SSIS中多个FTP文件夹中的文件]的可能的副本(https://stackoverflow.com/questions/20110156/download-files-from-multiple-ftp-folders-in-ssis) –

回答

0

如果你不使用脚本任务,出于某种原因需要,那么这里就是你想要做什么:

  1. 创建的foreach循环容器
  2. Collection选项卡,Folder场,浏览到包含所有要从源FTP下拉文件的所有子文件夹的文件夹。 (这是使这样的文件夹存在,它希望它也可以创建一个假设)
  3. 检查Traverse Subfolders框,选择Fully Qualified
  4. Variable Mappings选项卡,创建一个变量@FileNameWithPath或任何你想叫它。指数默认是好的。
  5. 创建名为FileName
  6. 设置的FileName此表达的包变量,这将删除路径:

RIGHT(@[User::FileNameWithPath], FINDSTRING(REVERSE(@[User::FileNameWithPath]), "\\", 1)-1)

  • 创建一个包变量称为FilePrefix
  • 做出一个表达式将前缀从FileName中拉出。这将是这一点,如果你是第一个下划线之前抓住一切:
  • LEFT(@[User::FileName],FINDSTRING(((DT_WSTR, 150) @[User::FileName]), "_", 1)-1)

  • 创建名为DestinationFolder另一个变量。
  • 使用刚刚创建的FilePrefix变量来构建DestinationFolder的表达式。这将是这样的:
  • "\\Your destination FTP\" + @[User::FilePrefix]

  • 在您的foreach循环容器中,添加一个File System Task
  • File System Task到移动或复制任何你需要的,与Source VariableFileNameWithPath,目标变量为DestinationFolder
  • +0

    感谢您的信息,但有没有办法让foreach循环连接到FTP服务器?你如何使foreach循环连接到FTP远程路径?我不知道这是可能的。谢谢! – Hmen

    +0

    当然,很乐意提供帮助 - 连接到FTP服务器,您只需要将完整路径放到上面的第2步即可。如果需要特殊凭据,则可能还需要将FTP映射为运行SSIS的服务器上的网络驱动器。 @Hmen –

    +0

    谢谢!如果我有任何问题,我会尝试将其作为下一个工作驱动器并回复给您。 – Hmen