我对使用Azure还很陌生,所以请原谅我提出这个基本问题。我正在尝试将每天发送到我的电子邮件地址的计划Excel文件导入到我的Azure SQL数据库中。到目前为止,我已经设法使用Azure Logic App将文件保存到blob中。我打算使用Azure Data Factory将blob复制到我的Azure SQL数据库中(因为在导入之后,我将使用ADF进行增量加载)。
但是,我的Excel通常采用这种表格格式(这是系统生成的,因此我没有编辑源代码的权限)。当我的源有重复的列标题,例如'Name',但数据本身并不重复时,问题就来了;它们代表不同的东西。例如:“Name”可以表示国家,另一列“Name”表示大陆。注意:我能够在我这一端区分它,以便知道哪个列索引与我的数据库中的哪个列索引相匹配。
我所做的:我已经在ADF中创建了一个数据集,不使用第一行作为标题(因为这会导致问题),然后创建一个数据流来过滤掉列标题,然后成功地将我的源映射到我的接收器。
我正在寻找的是,也许有更优雅的解决方案?我已经了解到,在创建dataset时可以使用导入架构更改源的列标题名称。但是当我试图导入一个excel作为我想要的列标题的模式时,出现了这个错误(假设我试图导入其中一个'Names‘作为'Country')。
'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,,从工作表“ErrorCode=ExcelInvalidColumnName 1”读取数据时指定了国家/地区列名‘Message=Invalid’。,Source=Microsoft.DataTransfer.ClientLibrary,‘
更新:下面是copy data活动的屏幕截图,其中映射源列为空,我必须分别选择几个重复的列名
发布于 2021-03-20 18:35:21
您可以只使用复制数据活动。
让它拉入带有标题的第一行(我让我的csv有几个名为thing
的列)。
然后在复制数据的映射选项卡上,单击导入方案
它将为您的重复列标题分配唯一的名称,并且您可以覆盖默认的输出列名称,如下所示...
发布于 2021-11-24 15:39:39
为了补充这一点,关于复制活动行为,在源代码中使用重复的列名:还有“映射”部分对重复的列进行编号(从0开始),数据集预览也是如此。你不能在复制活动的接收器中使用“自动创建表”,因为奇怪的是,自动创建表的生成器似乎不适用于重复列名的“编号逻辑”。
https://stackoverflow.com/questions/66718567
复制相似问题