如何将源存储帐户的所有容器作为容器中的文件夹复制到目标存储帐户?

问题描述 投票:0回答:1

场景:我的源存储帐户中有大量 Blob 容器。 应将它们复制到目标存储帐户,但以不同的方式,即

描述

所有源容器应作为文件夹复制到目标存储容器。

enter image description here

注意:我有列出源存储帐户容器的部分解决方案,但我在 ADF 中不知道如何实现上述场景。

手动处理我们正在做的事情

  1. 从 Azure 存储资源管理器中,我们将一一下载 Blob 容器。
  2. 将该 Blob 容器数据复制到目标存储帐户容器中使用源 Blob 容器名称创建的文件夹。
azure azure-data-factory azure-blob-storage
1个回答
0
投票

按照与此SO答案相同的步骤,您可以实现您的要求。但在这里,由于您要将容器复制为目标存储帐户中的文件夹,因此需要参数化目标数据集中的文件夹名称,而不是目标容器。

您可以检查以下逐步过程。这将创建目标文件夹并将源容器的所有内容复制到其中。

要获取源存储帐户的容器列表,请创建不带任何路径的二进制数据集。 不要提供任何容器或文件夹或任何文件名。将此数据集用于带有 ChildItems 字段的获取元数据活动。这将给出如下所示的所有容器名称。

"childItems": [
        {
            "name": "zipoutput2",
            "type": "Folder"
        },
        {
            "name": "zipsinput",
            "type": "Folder"
        },
        {
            "name": "zipsoutput",
            "type": "Folder"
        }
    ]

将此数组赋予 For-each 活动。在 For-Each 内部,您需要使用两个复制活动,一个用于复制源容器中的文件夹,另一个用于复制源容器中的文件。

创建如下所示的源和接收器数据集。

源数据集:

使用数据集参数作为容器名称。

enter image description here

接收器数据集:

在此给出您的目标容器名称,并使用数据集参数作为文件夹名称。

enter image description here

复制文件夹复制活动1:

将 for-each 中的源容器名称

@item().name
赋予数据集参数,并在源中遵循以下配置。

enter image description here

给出水槽中的以下配置。

enter image description here

复制 Activity2 以进行文件复制:

为此活动也使用相同的源和接收器数据集。请按照以下配置进行操作。

enter image description here

enter image description here

现在,调试管道,它将给出预期的结果。

enter image description here

注意: 如果源容器为空,则不会在目标中创建这些文件夹,因为 Blob 存储不支持空文件夹。

© www.soinside.com 2019 - 2024. All rights reserved.