我想创建一个简单的azure数据工厂流程,以从blob存储中读取文件(csv),然后使用数据流将其写入azure sql数据库。
源数据集有一个名称为“ myTime”的列,类型为“字符串”。
我添加了一个“派生列”,以添加一个名称为“ customTime”的新列,其表达式为“ currentTimestamp()”
最后,在sql接收器中,我将“ customTime”映射到数据库上的DateTime字段。
如果预览数据流中的数据,一切看起来都很好,我可以看到两个字段(myTime,customTime)。调试管道时,出现以下异常:
Activity myActivity failed: DF-SYS-01 at Sink 'sqlsink': java.sql.BatchUpdateException: Invalid column name 'myTime'
有人知道为什么sql接收器链接到“ myTime”而不是“ customTime”吗?除了这是输入架构的一部分,我看不到任何对“ myTime”的引用。
非常感谢您! 迈克尔
答案 0 :(得分:1)
此错误是由列映射引起的。您创建了新列“ customTime
”,但表中的列名为“ myTime”。
我发现csv文件列名和架构必须与Sink表相同,否则在调试时会给出错误消息,这是我的错误消息:
解决方案1::在接收器设置中选择“重新创建表”。但这会改变您的表架构:从
myTime
到customTime
。
解决方案2:在派生列的设置中与接收器表添加相同的列名。
我以同样的方式进行测试,并成功完成了
我从Blob存储中读取文件(csv),然后使用数据流将其写入Azure SQL数据库。我创建具有相同架构的Sink表。
这是我的csv文件:
希望这会有所帮助。