我已经成功地将数据从CSV加载到Azure SQL Server数据仓库,但是我现在有一个excel文件作为源,当我尝试将此excel文件读取到BLOB CSV中时,它会创建一个带有垃圾字符的文件。任何帮助将不胜感激。
若要在数据工厂中处理此问题,需要使用自定义活动 (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问题。例如:
有没有简单的方法可以将.xls文件转换为.csv文件?(卓越)
就其他 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/
希望这有帮助。
Azure SQL 数据仓库和 Polybase 都不支持 Excel 本身,因此你必须使用平面文件格式,或者使用能够连接和/或转换 Excel 的工具。
一种方法可能是将源文件转换为平面文件,并使用 Polybase 和/或 Azure 数据工厂。
一种方法可能是使用 SQL Server Integration Services (SSIS),它确实原生支持 Excel,并且自 Azure Feature Pack for Integration Services 以来,现在可以更好地与 Azure 集成。
呵呵
Azure 支持将.xlsx
和.xls
文件作为源,但不支持作为接收器。
https://learn.microsoft.com/en-us/azure/data-factory/format-excel
以下连接器支持 Excel 格式:
Amazon S3、Amazon S3 兼容存储、Azure Blob、Azure Data Lake Storage Gen1、Azure Data Lake Storage Gen2、Azure Files、File System、FTP、Google Cloud Storage、HDFS、HTTP、Oracle Cloud Storage 和 SFTP。