【问题标题】:Importing CSV in SSIS: truncation error在 SSIS 中导入 CSV:截断错误
【发布时间】:2018-10-07 00:46:37
【问题描述】:

我在 SSIS 中导入一个包含许多字符串列的 CSV 文件。我设置的列宽超过了最大长度,但仍然低于错误

[输入 CSV 文件 [114]] 错误:数据转换失败。数据 “功能”列的转换返回状态值 4 和 status text "文本被截断或一个或多个字符不匹配 在目标代码页中。”。

[输入 CSV 文件 [114]] 错误:“输入 CSV 文件。输出 [平面文件 源输出].Columns[Functionality]" 失败,因为截断 发生,以及“输入 CSV”上的截断行处置 File.Outputs[平面文件源输出].Columns[功能]" 指定截断失败。发生截断错误 指定组件的指定对象。

[输入 CSV 文件 [114]] 错误:处理文件时出错 数据行 236 上的“D:\Prateek\SSIS_UB_PWS\January.csv”。

[SSIS.Pipeline] 错误:SSIS 错误代码 DTS_E_PRIMEOUTPUTFAILED。这 输入 CSV 文件的 PrimeOutput 方法返回错误代码 0xC0202092。 管道引擎调用时组件返回失败代码 素数输出()。故障代码的含义由 组件,但错误是致命的并且管道停止执行。 在此之前可能会发布带有更多信息的错误消息 关于失败。

作为一种解决方法,我已将值设置为 500 或 1000,现在它允许我继续,但实际长度为两位数。

请提出可能的错误。

【问题讨论】:

  • 也许导入读取了 unicode 中的 cvs 文件,并且您定义了 varchar 而不是 nvarchar ?
  • 不,没有检查 Unicode。列值采用 ANSI 格式。

标签: sql-server csv import ssis truncation


【解决方案1】:

检查,第 236 行的“功能”列的值是多少。然后,验证允许的值。在源的高级编辑器中,如果您正在将数据加载到表格中,您可以增加长度(如果没有任何特殊字符)

【讨论】:

  • 如果数据是 unicode,您可以使用派生列。使用 (DT_STR, 50, 1252) ([ColumnName])
  • 在特殊字符的情况下,如果我将列作为 DT_WSTR 并想将其输入到数据类型为 Varchar() 的表列中,可以吗?
  • 否。如果在sql表中使用特殊字符,则必须将数据类型更改为nvarchar()
【解决方案2】:

当源列长度大于目标列长度时会出现截断警告,因此它会截断源值以适应其目标。能否分享一下列的长度和目的列的长度?

【讨论】:

  • 我已经添加了一个答案,我很遗憾没有注意到数据是根据数据中的逗号 (,) 分隔的。
【解决方案3】:

我收到了错误,抱歉我对问题的理解不好。 实际上,其中一列在数据中有多个逗号 (,),并且正在进入其他列(文本分隔符设置为 )。因此,我在其他专栏中也获得了比预期更大的价值。

感谢您的帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-29
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 2017-03-24
    • 1970-01-01
    相关资源
    最近更新 更多