场景:我的源存储帐户中有大量 Blob 容器。 应将它们复制到目标存储帐户,但以不同的方式,即
描述:
所有源容器应作为文件夹复制到目标存储容器。
注意:我有列出源存储帐户容器的部分解决方案,但我在 ADF 中不知道如何实现上述场景。
手动处理我们正在做的事情:
按照与此SO答案相同的步骤,您可以实现您的要求。但在这里,由于您要将容器复制为目标存储帐户中的文件夹,因此需要参数化目标数据集中的文件夹名称,而不是目标容器。
您可以检查以下逐步过程。这将创建目标文件夹并将源容器的所有内容复制到其中。
要获取源存储帐户的容器列表,请创建不带任何路径的二进制数据集。 不要提供任何容器或文件夹或任何文件名。将此数据集用于带有 ChildItems 字段的获取元数据活动。这将给出如下所示的所有容器名称。
"childItems": [
{
"name": "zipoutput2",
"type": "Folder"
},
{
"name": "zipsinput",
"type": "Folder"
},
{
"name": "zipsoutput",
"type": "Folder"
}
]
将此数组赋予 For-each 活动。在 For-Each 内部,您需要使用两个复制活动,一个用于复制源容器中的文件夹,另一个用于复制源容器中的文件。
创建如下所示的源和接收器数据集。
源数据集:
使用数据集参数作为容器名称。
接收器数据集:
在此给出您的目标容器名称,并使用数据集参数作为文件夹名称。
复制文件夹复制活动1:
将 for-each 中的源容器名称
@item().name
赋予数据集参数,并在源中遵循以下配置。
给出水槽中的以下配置。
复制 Activity2 以进行文件复制:
为此活动也使用相同的源和接收器数据集。请按照以下配置进行操作。
现在,调试管道,它将给出预期的结果。
注意: 如果源容器为空,则不会在目标中创建这些文件夹,因为 Blob 存储不支持空文件夹。