【问题标题】:Azure Data Factory Error - String or binary data would be truncatedAzure 数据工厂错误 - 字符串或二进制数据将被截断
【发布时间】:2020-10-01 06:49:39
【问题描述】:

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

来源有 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. "}

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

【问题讨论】:

    标签: azure ssms azure-synapse


    【解决方案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

    【讨论】:

    • 感谢 Veikko。我不知道默认字符限制是 1。我为所有列设置了更长的字符限制,然后它就起作用了。谢谢。
    猜你喜欢
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    • 2017-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多