Azure数据工厂错误-字符串或二进制数据将被截断

时间:2020-06-11 15:12:10

标签: azure ssms azure-synapse

我正在建立我的第一个数据工厂管道,这是一个非常基本的管道。我有一个仅包含源(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. "}

我就是不明白。我花了很多时间试图找出问题所在,但我还是不明白。有人可以告诉我我在做什么错吗?

1 个答案:

答案 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