数据工厂无法将最后一列后带逗号的“csv”复制到 sql 数据仓库

Data Factory cannot copy `csv` with comma after last column to sql data warehouse

我有 CSV 个文件要从 blob 复制到 DW,CSV 个文件在最后一列后有逗号(参见下面的示例)。使用 ADF,我尝试将 csv 文件复制到 DW 中的 SQL table。但是,我收到了这个错误,我认为这是因为最后一个逗号(因为我有 15 列):

csv 文件的几行:

Code,Last Trading Date,Bid Price,Bid Size,Ask Price,Ask Size,Last Price,Traded Volume,Open Price,High Price,Low Price,Settlement Price,Settlement Date,Implied Volatility,Last Trade Time,
BNH2021F,31/03/2021,37.750000,1,38.000000,1,,0,,,,37.750000,29/03/2021,,,
BNM2021F,30/06/2021,44.500000,6,44.700000,2,44.400000,4,44.300000,44.400000,44.300000,44.500000,29/03/2021,,15-55-47.000,
BNU2021F,30/09/2021,46.250000,2,47.000000,1,47.490000,2,47.490000,47.490000,47.490000,46.920000,29/03/2021,,15-59-10.000,

请注意,CSVs 是原始文件,我无法更改它们。我还在数据集中尝试了不同的 QuoteEscape 字符,但它没有用。 此外,我想使用 ADF 来执行此操作,而不是 azure 函数。

我找不到任何解决办法,请帮忙。

更新: 有趣的是数据集预览有效:

我认为你可以使用数据流来实现。

  1. Azure 数据工厂会将最后一个逗号解释为具有空值的列。所以我们可以使用 Select activity 来过滤最后一列。

  2. sink 手动设置映射。

  3. 然后就可以沉到我们的DW或者SQLtable了。

您正在使用 15 列,而您的目的地需要 16 列。将另一列添加到您的 CSV 或修改您的 DW。

有一个简单的解决方案。

第 1 步:

取消选中源数据集中的“第一行为 header”选项

第 2 步: 先将其汇入另一个 CSV 文件。在接收器 csv 数据集导入架构中,如下所示。复制 activity 将创建一个包含所有干净的 15 列的新 CSV 文件,即最后一个额外的逗号不会出现在新的 csv 文件中。

第 3 步: 从新创建的 csv 文件中复制“第一行为 header”,并将其复制到 DW。