【问题标题】:Loading data from Excel file into Azure Datawarehouse将 Excel 文件中的数据加载到 Azure 数据仓库
【发布时间】:2017-05-22 09:57:44
【问题描述】:

我已成功将数据从 CSV 加载到 Azure SQL Server 数据仓库,但是我现在有一个 excel 文件作为源,当我尝试将这个 excel 文件读入 BLOB CSV 时,它会创建一个带有垃圾字符的文件。任何帮助将不胜感激。

【问题讨论】:

  • CSV 是一个文本文件。 xlsx 是一个二进制文件。你不能以同样的方式加载它们

标签: azure azure-data-factory


【解决方案1】:

要在数据工厂中处理此问题,您需要使用一个自定义活动 (DotNotActivity),该活动首先将 Excel 文件转换为 CSV。然后有一个下游活动根据需要处理 CSV 数据集。

自定义活动将需要编写一些处理对话的 C# 类。使用 Office 互操作性库或执行类似的操作,将 Excel 文件视为数据表。

    public static string ToCSV(this DataTable table)
    {
        var result = new StringBuilder();
        for (int i = 0; i < table.Columns.Count; i++)
        {
            result.Append(table.Columns[i].ColumnName);
            result.Append(i == table.Columns.Count - 1 ? "\n" : ",");
        }

        foreach (DataRow row in table.Rows)
        {
            for (int i = 0; i < table.Columns.Count; i++)
            {
                result.Append(row[i].ToString());
                result.Append(i == table.Columns.Count - 1 ? "\n" : ",");
            }
        }
        return result.ToString();
    }

或者查看其他关于相同的 SO 问题。例如:

Is there any simple way to convert .xls file to .csv file? (Excel)

就其他 Azure 数据工厂粘合而言,编译后的库需要存储在 blob 存储中,并且实际上将由 Azure Batch 服务执行。如果要针对您的 Azure Data Lake 存储进行身份验证,这将需要 Azure AD 服务主体。

查看此 blob 帖子以了解有关创建自定义活动的更多详细信息。

https://www.purplefrogsystems.com/paul/2016/11/creating-azure-data-factory-custom-activities/

还有这个用于 ADL 的身份验证:

https://www.purplefrogsystems.com/paul/2016/12/azure-data-lake-authentication-from-azure-data-factory/

希望这会有所帮助。

【解决方案2】:

Azure SQL 数据仓库或 Polybase 都不支持 Excel,因此您要么必须使用平面文件格式,要么使用能够连接和/或转换 Excel 的工具。

一种方法可能是将源文件转换为平面文件并使用 Polybase 和/或 Azure 数据工厂。

一种方法可能是使用 SQL Server Integration Services (SSIS),它本身就支持 Excel,并且自 Azure Feature Pack for Integration Services 以来现在与 Azure 有更好的集成。

HTH

【讨论】:

    猜你喜欢
    • 2017-12-16
    • 1970-01-01
    • 2016-03-15
    • 2020-03-15
    • 2021-03-04
    • 2019-11-27
    • 2016-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多