【问题标题】:How to read files with .xlsx and .xls extension in Azure data factory?如何在 Azure 数据工厂中读取扩展名为 .xlsx 和 .xls 的文件?
【发布时间】:2022-03-18 07:33:59
【问题描述】:

我正在尝试在我的 azure 数据工厂数据集中读取扩展名为 .xlsx 的 Azure Blob 存储中的文件。它会引发以下错误

Error found when processing 'Csv/Tsv Format Text' source 'Filename.xlsx' with row number 3: found more columns than expected column count: 1.

在azure数据工厂中读取excel文件的正确列和行分隔符是什么

【问题讨论】:

    标签: excel azure azure-data-factory azure-data-factory-2


    【解决方案1】:

    2022 年 3 月更新:ADF 现在通过映射数据流更好地支持 Excel:

    https://docs.microsoft.com/en-us/azure/data-factory/format-excel

    Excel 文件具有专有格式,不是简单的分隔文件。正如here 所指出的那样,Azure 数据工厂没有 可以直接选择导入 Excel 文件,例如,您不能为 Excel 文件创建链接服务并轻松阅读。您的选择是:

    1. 将数据导出或转换为平面文件,例如在传输到云之前,如 .csv、制表符分隔、管道分隔等比 Excel 文件更易于阅读。这是您最简单的选择,但显然需要更改流程。
    2. 尝试分解 XML - 创建自定义任务以将 Excel 文件打开为 XML 并按照建议 here 提取数据。
    3. Azure 数据工厂现在支持 SSIS 包(通过Execute SSIS package 活动),并且更好地支持 Excel 文件,例如连接管理器。因此,可能可以选择创建一个 SSIS 包来处理 Excel 并将其托管在 ADFv2 中。 警告!我没有对此进行测试,我只是推测它是可能的。此外,还需要为在 ADFv2 中运行 SSIS 创建集成运行时 (IR)。
    4. 尝试一些其他自定义活动,例如在 github here 上有一个自定义 U-SQL Extractor 用于粉碎 XML。
    5. 尝试使用 Databricks 读取 Excel,一些示例 here 尽管启动 Spark 集群来读取一些 Excel 文件似乎有点过头了。如果 Spark 已经在您的架构中,这可能是一个不错的选择。

    让我们知道你的进展。

    【讨论】:

      【解决方案2】:

      Azure 数据工厂 V2 最近发布了一个更新,以支持在现有连接器上解析 Excel(.xls) 文件。

      目前支持excel文件的连接有:

      • 亚马逊 S3
      • Azure Blob
      • Azure Data Lake Storage Gen1
      • Azure Data Lake Storage Gen2
      • Azure 文件存储
      • 文件系统
      • FTP
      • 谷歌云存储
      • HDFS
      • HTTP
      • SFTP

      更多详情可以在这里找到:https://docs.microsoft.com/en-us/azure/data-factory/format-excel

      【讨论】:

        【解决方案3】:

        Azure 数据工厂没有直接上传 excel 的选项,但是可以通过一些配置通过链接服务上传。请按照以下步骤操作:

        1. 使用适当的协议(FTP、文件共享、SFTP 等)创建到源的链接服务
        2. 为您的云存储创建链接服务。
        3. 进行复制数据活动,使用您之前定义的链接服务定义文件系统源数据集和接收器
        4. 在 Source 和 Sink 中,勾选 Binary file 选项。Binary file option
        5. 发布和执行您的管道

        【讨论】:

          【解决方案4】:

          我想详细说明选项 3。SSIS 包。我测试了解决方案,它有点工作。首先 - SSIS IR 非常昂贵,您想在不需要时使用http post's to start-stop。

          其次,SSIS 不支持开箱即用地处理 blob 文件。有一些方法可以解决它。你可以用一些第三方软件(没试过),或者explore options

          在我的例子中,我使用技巧来部署在本地下载文件的包,处理然后删除它。由于 SSIS IR 是一个虚拟机,所以部署后它在 IR 上的作用基本相同。这是一个技巧而不是解决方案,它不是 100% 稳定的。另一个问题 - 数字字段在处理过程中出现了一些微不足道的错误 - 例如。在数据库站点上传 25 导致 25.0000000001 。不知道为什么。我没有足够的时间深入调查问题。

          【讨论】:

          猜你喜欢
          • 2018-11-27
          • 2021-11-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-09-28
          • 2018-11-25
          相关资源
          最近更新 更多