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

d8tt03nd  于 2023-06-27  发布在  其他
关注(0)|答案(4)|浏览(166)

我有CSV文件,我想从一个blob复制到DW,CSV文件的最后一列后有逗号(见下面的例子)。使用ADF,我尝试将csv文件复制到DW中的SQL表。然而,我得到了这个错误,我认为这是因为最后一个逗号(因为我有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,

请注意,CSV s是原始文件,我不能更改它们。我还在数据集中尝试了不同的 QuoteEscape 字符,但没有成功。我还想使用ADF来实现这一点,而不是Azure函数。
我找不到任何解决办法,请帮助。

更新:数据集预览的效果很有意思:

wbrvyc0a

wbrvyc0a1#

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

  1. Azure数据工厂将最后一个逗号解释为具有空值的列。因此,我们可以使用Select活动过滤最后一列。

1.在sink手动设置Map。

1.然后,我们可以将数据集中到DW或SQL表。

wz8daaqr

wz8daaqr2#

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

2exbekwf

2exbekwf3#

有一个简单的解决办法。

第一步:

取消选中源数据集

中的“First Row as header”选项

**第二步:**先将其下沉到另一个CSV文件中。在接收器csv数据集导入模式中,如下所示。复制活动将创建一个新的CSV文件,其中包含所有15个干净的列,即最后额外逗号将不会出现在新csv文件.

**第三步:**从新建csv文件中复制,勾选“First row as header”,并将其发送到DW。

az31mfrm

az31mfrm4#

我遇到了同样的问题,csv文件的最后一列为空col1,col2,col3
“a”,“B”
“c”“d”
管道是动态的,所以我不能手动Map。
在我的例子中,我通过将数据集中的NULL值替换为“”来解决这个问题。

相关问题