我正在建立我的第一个数据工厂管道,这是一个非常基本的管道。我有一个仅包含源(csv平面文件)和接收器(synapse表)的数据流。
来源有12列。因此,我在Synapse中创建了一个表(通过SSMS),所有12列均作为varchar。没有钥匙。只是一个基本表。构建数据流活动时,源和目标上的数据预览看起来都很完美。但是,当我尝试运行(调试)管道时,它只会失败并显示以下错误:
Operation on target load_sales_data failed: {"StatusCode":"DFExecutorUserError",
"Message":"at Sink 'Sales': java.sql.BatchUpdateException:
[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]String or binary data would be truncated.
","Details":"at Sink 'Sales': java.sql.BatchUpdateException:
[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]String or binary data would be truncated. "}
我就是不明白。我花了很多时间试图找出问题所在,但我还是不明白。有人可以告诉我我在做什么错吗?
答案 0 :(得分:1)
列长度太短,无法将csv列中的数据放入数据库表中。检查是否为varchar列指定了合适的字段长度。请注意,默认情况下,长度为一个字符长。 varchar数据类型的文档对varchar(n)
说:
当在数据定义或变量声明中未指定n时 语句,默认长度为1。
如果指定了长度,请仔细检查csv中的数据是否包含太长的值。
字段定界符不匹配可能导致ADF将整行视为第一个字段的值,并且比您期望的更长。检查csv源的字段定界符设置。您可以在ADF的Azure门户中预览表数据以验证其是否正确看到了csv结构。
Microsoft文档中的更多信息,位于https://docs.microsoft.com/en-us/sql/t-sql/data-types/char-and-varchar-transact-sql