Rob*_*man 1 azure-data-factory
我需要一个数据工厂来:
blob 容器中只有一个 csv 文件,该文件包含五行。
到目前为止,我有以下行动:
在 for-each 操作中,我有一个复制操作。我确实给了它一个动态数据集的源,该数据集的文件名设置为 @Item().name 的参数。然而,结果有 5 行被插入到目标表中,而我原本期望只有 1 行。
for-each 循环仅执行一次,但我不知道使用保存文件名和时间戳的变量的数据源?
您正朝着正确的方向前进,但在 For every 中,您只需要一个存储过程活动,它将文件名(以及您拥有的任何其他可用元数据)插入到 Azure DB 表中。
以下是数据库中存储过程的示例:
CREATE Procedure Log.PopulateFileLog (@FileName varchar(100))
INSERT INTO Log.CvsRxFileLog
select
@FileName as FileName,
getdate() as ETL_Timestamp
Run Code Online (Sandbox Code Playgroud)
编辑:
您还可以使用 For Each 中的查找活动直接执行插入,如下所示:

编辑2 这将展示如何在没有 foreach 的情况下执行此操作注意:这是最具成本效益的方法,特别是在定期处理数百或数千个文件时!
1、使用具有 Azure SQLDB 源和 Blob 存储 CSV 文件接收器的复制数据活动,从查找/获取元数据活动中复制输出 Json 数组
2、使用 Blob 存储 Json 文件的源和 Azure SQLDB 的接收器创建另一个复制数据活动
- - - - -来源:
- - - - -下沉:
---------映射:
本质上,您将整个 json 输出保存到 Blob 中的文件中,然后使用 json 文件类型将该文件复制到 azure db。这样,即使您尝试从包含 500 个项目的数据集中插入数据,您也可以运行 3 个活动。
| 归档时间: |
|
| 查看次数: |
4804 次 |
| 最近记录: |