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

Azure Data Factory Error - String or binary data would be truncated

我正在构建我的第一个数据工厂管道,这是一个非常基础的管道。我有一个只有源(csv 平面文件)和接收器(突触 table)的数据流。

来源有 12 列。因此,我在 Synapse 中(通过 SSMS)创建了一个 table,所有 12 列都作为 varchar。没有钥匙。只是一个基本的table。当我构建数据流 activity 时,源和目标上的数据预览看起来很完美。但是当我尝试 运行 (调试)管道时,它失败并出现以下错误:

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. "}

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

您的列长度太短,无法将 csv 列中的数据放入数据库 table。检查您是否为 varchar 列指定了 suitable 字段长度。请注意,默认长度为一个字符长。 varchar 数据类型的文档对 varchar(n) 说:

When n isn't specified in a data definition or variable declaration statement, the default length is 1.

如果您指定了长度,请仔细检查 csv 中的数据是否包含太长的值。

字段分隔符不匹配可能会导致 ADF 将整行视为第一个字段的值,并且它比您预期的要长。检查 csv 源的字段分隔符设置。您可以在 ADF 中预览 Azure 门户中的 table 数据,以验证它是否正确看到 csv 结构。

Microsoft 文档中的更多信息位于 https://docs.microsoft.com/en-us/sql/t-sql/data-types/char-and-varchar-transact-sql