首页 > 解决方案 > 如何将文件从 SFTP 复制到基于源文件名(Blob 存储)动态创建的目标文件夹?

问题描述

我是 ADF 新手,需要 2 种情况的帮助

1.I have to copy files from SFTP to blob storage(Azure Gnen2) using ADF. In the source SFTP folder, there are 3- 5 different the files. For example

S09353.DB2K.AFC00R46.F201130.txt
S09353.DB2K.XYZ00R46.F201130.txt
S09353.DB2K.GLY00R46.F201130.txt

On copying, this files are copied and placed under corresponding folders which are created dynamically based on file types.

For example: S09353.DB2K.AFC00R46.F201130.txt copy to  AFC00R46 folder
             S09353.DB2K.XYZ00R46.F201130.txt copy to XYZ00R46 folder.

2.Another requirement is need to copy csv files from blob storage to SFTP. On coping, the files need to copy to target folder created dynamically based on file name:

for example:  cust-fin.csv----->copy to--------->Finance folder

请帮助我

标签: copysftpazure-data-factory

解决方案


您的问题的基本解决方案是在数据集中使用参数。此示例适用于 Blob 存储连接,但 SFTP 的方法也相同。另一个提示:如果您只是移动文件,请使用二进制数据集。

在数据集中创建参数 在此处输入图像描述

数据集中的引用参数 在此处输入图像描述

管道中的供应参数 在此处输入图像描述

在此示例中,我将 Pipeline 参数传递给 GetMetadata Activity,但所有 DataSet 类型的原理都是相同的。这些值也可以是硬编码的、表达式或变量。

您的流程

如果您需要它对每个文件名都是动态的,那么您可能希望将其分成几部分:

  1. 使用 GetMetadata Activity 列出来自 SFTP 的文件。
  2. 遍历返回列表并单独处理每个文件。
  3. 在 Foreach -> 单独解析每个文件名以将文件夹名称提取到变量中。
  4. 在 Foreach 内部 -> 在复制活动中使用变量来填充数据集中的文件夹名称。

推荐阅读