【发布时间】:2021-07-13 14:24:33
【问题描述】:
我需要一个数据工厂:
- 检查 Azure blob 容器中的 csv 文件
- 对于每个 csv 文件
- 在 Azure Sql 表中插入一行,将文件名作为列值
blob 容器中只有一个 csv 文件,该文件包含五行。
到目前为止,我有以下操作:
在 for-each 操作中,我有一个复制操作。我确实给了它一个动态数据集的来源,该数据集的文件名设置为@Item().name 的参数。然而,结果是 5 行被插入到目标表中,而我期望只有 1 行。
for-each 循环只执行一次,但我不知道使用保存文件名和时间戳的变量的数据源?
【问题讨论】:
-
COPY 将复制内容,而不是元数据。您已经有了带有 @item().name 的 blob 名称 - 我将创建一个接受文件名作为参数的存储过程,并在 foreach 活动中调用它而不是 COPY。
-
将数据流添加到您的管道。对于 Source,指向您的 blob 容器。对源转换启用采样并将行限制设置为 1。输入列名,即“用于存储文件名的列”的“myfilename”。最后,添加一个 Sink,它是您的 SQL 表。映射“我的文件名”列。这会将每个文件名存储为容器中的一行。