【问题标题】:How to load files from blob to sql dw by using azure data factory?如何使用 azure 数据工厂将文件从 blob 加载到 sql dw?
【发布时间】:2020-06-12 04:58:57
【问题描述】:

我尝试了很多方法来加载数据:

  1. Azure Blob 到 Azure SQL 突触。

    我的要求是:
    说明:

     (Input)Blob storage --->  Azure sql synapse(Output)
                    emp_dummy.csv----> emp_dummy table
                    dept_dummy.csv -----> dept_dummy table
                    sales_dummy.csv-----> sales_dummy table   and so on
    

...

我们的文件以不同的名称开头,但格式仅为 .csv。 我一直在使用getmetadata 活动或查找活动以各种方式尝试此操作。

当我尝试使用以下活动时,遇到错误: [ADF 管道][1] [1]:https://i.stack.imgur.com/RynIb.png 错误:

{
    "errorCode": "2200",
    "message": "ErrorCode=UserErrorMissingPropertyInPayload,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Required property 'fileName' is missing in payload.,Source=Microsoft.DataTransfer.ClientLibrary,'",
    "failureType": "UserError",
    "target": "Copy data1",
    "details": []
}

我希望,我提到了所有细节,如果需要更多,请告诉我。

【问题讨论】:

  • 嗨,Imran,请查看我的最新答案。如果我的回答对您有帮助,请将其标记为答案(单击答案旁边的复选标记,将其从灰色切换为已填充。)。这对其他社区成员可能是有益的。谢谢。
  • 如果您测试成功请告诉我,谢谢!
  • @Yue,你说的下面的步骤还不够,我们需要写一个storeprocedure来调用schema、文件名和表名。感谢你的支持,我完成了这个任务。

标签: azure-data-factory azure-sqldw


【解决方案1】:

我想通了。

这是我的示例步骤:将两个 csv 文件加载到 ADW,并使用 csv 文件名自动创建同名表。

Blob 存储中的 Csv 文件:

获取 blob 容器“备份”中的所有文件名:

Foreach 项目设置:

@activity('Get Metadata2').output.childItems

在 Foreach 中复制活动:

在复制活动中,使用另一个 blob 源,添加参数以选择文件:

来源设置:

汇数据集(ADW):

接收器设置:

表名表达式:@split(item().name, '.')[0]

注意:获取元数据会得到完整的文件名如'test.csv',当我们设置表名时,我们需要将其拆分并将表名设置为'test'。

执行管道:

检查 ADW 中的数据

希望这会有所帮助。

【讨论】:

  • 它有效,但问题是它迭代了单个文件夹中的所有文件。它不会遍历 blob 容器中的所有目录。您能否指导我们如何做到这一点?
  • @MuhammadWaheed 你能发个新问题吗?
【解决方案2】:

我在 Google 上搜索了你。我在那里发现了几个非常糟糕的教程。下面的两个链接看起来很不错。

https://intellipaat.com/blog/azure-data-factory-tutorial/

https://medium.com/@adilsonbna/using-azure-data-lake-to-copy-data-from-csv-file-to-a-sql-database-712c243db658

请记住,当您使用 Azure 数据工厂从文件存储中复制数据时,您现在可以配置通配符文件筛选器,以让复制活动仅选取具有已定义命名模式的文件,例如“*.csv”或“???20180504.json”。

作为参考,请看下图。

如果您想在 Blob 环境中遍历不同文件夹中的所有文件,而不是将文件或文件夹设置为:

adfv2/SalesJan2009.csv

您可以将文件或文件夹设置为:

adfv2/Sales*2009.csv

这会将 2009 年的所有销售数据合并到一个数据框中,您可以将其加载到 SQL Server(数据仓库、Synapse 等)。

【讨论】:

  • 我已经完成了这个任务,感谢所有提供意见的人。
猜你喜欢
  • 1970-01-01
  • 2020-06-10
  • 2022-01-12
  • 2019-06-06
  • 2021-12-21
  • 2021-11-25
  • 2021-09-21
  • 2020-03-18
  • 1970-01-01
相关资源
最近更新 更多