ADF数据流:无效的列名

时间:2019-07-08 08:41:27

标签: azure azure-data-factory

我想创建一个简单的azure数据工厂流程,以从blob存储中读取文件(csv),然后使用数据流将其写入azure sql数据库。

源数据集有一个名称为“ myTime”的列,类型为“字符串”。

我添加了一个“派生列”,以添加一个名称为“ customTime”的新列,其表达式为“ currentTimestamp()”

最后,在sql接收器中,我将“ customTime”映射到数据库上的DateTime字段。

enter image description here

如果预览数据流中的数据,一切看起来都很好,我可以看到两个字段(myTime,customTime)。调试管道时,出现以下异常:

Activity myActivity failed: DF-SYS-01 at Sink 'sqlsink': java.sql.BatchUpdateException: Invalid column name 'myTime'

有人知道为什么sql接收器链接到“ myTime”而不是“ customTime”吗?除了这是输入架构的一部分,我看不到任何对“ myTime”的引用。

非常感谢您! 迈克尔

1 个答案:

答案 0 :(得分:1)

此错误是由列映射引起的。您创建了新列“ customTime”,但表中的列名为“ myTime”。

我发现csv文件列名和架构必须与Sink表相同,否则在调试时会给出错误消息,这是我的错误消息:

enter image description here

  

解决方案1::在接收器设置中选择“重新创建表”。但这会改变您的表架构:从myTimecustomTime

enter image description here

  

解决方案2:派生列的设置中与接收器表添加相同的列名。

enter image description here

我以同样的方式进行测试,并成功完成了

我从Blob存储中读取文件(csv),然后使用数据流将其写入Azure SQL数据库。我创建具有相同架构的Sink表。

这是我的csv文件:

enter image description here

我的数据流: enter image description here

第1步:来源设置enter image description here

步骤2:衍生列的设置 enter image description here

第3步:接收器设置: enter image description here

运行成功: enter image description here

enter image description here

希望这会有所帮助。