2017-05-22 33 views
1

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

+0

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

回答

0

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

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

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

HTH

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(); 
    } 

或查看其他有关同样的问题。例如:

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

在其他Azure的数据工厂胶方面,编译库将需要被存储在Blob存储,将真正得到通过Azure的批量服务执行。如果需要对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/

希望这有助于。