Compartir a través de

使用 Azure 数据工厂移动文件

适用于:Azure 数据工厂 Azure Synapse Analytics

对于在存储之间复制二进制文件的“移动”场景,ADF 复制活动提供了内置支持。 启用它的方法是在复制活动中将“deleteFilesAfterCompletion”设置为 true。 这样一来,复制活动就会在作业完成后从数据源存储中删除文件。

本文介绍了一种解决方案模板,它可作为另一种利用 ADF 灵活控制流以及复制活动和删除活动来实现相同场景的方法。 此模板的常见使用场景之一:不断地将文件放入源存储的登陆文件夹。 通过创建计划触发器,ADF 管道可以定期将这些文件从源存储移到目标存储。 ADF 管道实现“移动文件”的方式是从登陆文件夹中获取文件,将每个文件复制到目标存储中的另一个文件夹,然后从源存储中的登陆文件夹删除相同的文件。

注意

请注意,此模板旨在移动文件,而不是移动文件夹。 如果通过以下方式移动文件夹,则需要十分谨慎:更改数据集,使其仅包含文件夹路径,然后使用复制活动和删除活动引用表示某个文件夹的同一数据集。 因为必须确保在复制操作和删除操作之间不会有新文件进入文件夹。 如果在 Copy 活动刚完成复制作业,但 Delete 活动尚未开始时有新文件进入文件夹,则 Delete 活动可能将通过删除整个文件夹来删除尚未复制到目标的此新文件。

关于此解决方案模板

此模板从基于源文件的存储中获取文件。 然后,它将每个文件移到目标存储。

该模板包含五个活动:

  • GetMetadata 获取对象列表,其中包括源存储上的文件夹中的文件和子文件夹。 它不会以递归方式检索对象。
  • Filter 筛选 GetMetadata 活动中的对象列表,以仅选择文件。
  • ForEach 获取 Filter 活动提供的文件列表,然后循环访问该列表并将每个文件传递到 Copy 活动和 Delete 活动。
  • Copy 将源中的一个文件复制到目标存储。
  • Delete 从源存储中删除同一个文件。

该模板定义了四个参数:

  • SourceStore_Location 是要从中移动文件的源存储的文件夹路径。
  • SourceStore_Directory 是要从中移动文件的源存储的子文件夹路径。
  • DestinationStore_Location 是要将文件移到的目标存储的文件夹路径。
  • DestinationStore_Directory 是要将文件移到的目标存储的子文件夹路径。

如何使用此解决方案模板

  1. 转到“移动文件”模板。 选择现有的连接,或者与要从中移动文件的源文件存储建立的连接。 请注意,DataSource_FolderDataSource_File 是对源文件存储的相同连接的引用。

    显示创建与源数据库的新连接的屏幕截图。

  2. 选择现有的连接,或者与要将文件移到的目标文件存储建立的连接。

    显示创建与目标的新连接的屏幕截图。

  3. 选择“使用此模板”选项卡。

  4. 你将看到管道,如以下示例所示:

    显示管道的屏幕截图。

  5. 选择“调试”,输入“参数”,然后选择“完成”。 参数是要从中移动文件的文件夹路径,以及要将文件移到的文件夹路径。

    显示运行管道的位置的屏幕截图。

  6. 查看结果。

    显示管道运行结果的屏幕截图。