Text SSIS文本被截断,状态值为4

Text SSIS文本被截断,状态值为4,text,csv,ssis,Text,Csv,Ssis,我正在开发一个SSIS包,试图从CSV平面文件更新现有的SQL表。除一列外,所有列都已成功更新。如果在truncate时忽略此列,则包将成功完成。所以我知道这是一个截断问题,而不是错误 此列几乎每行都为空。但是,有几行的字段为200-300个字符。我的数据转换任务将此字段标识为DT_WSTR,但根据我在其他地方读到的内容,可能这应该是DT_NTEXT。我两个都试过了,我甚至把DT_WSTR设置为500。但这些都不能解决我的问题。我该怎么修理?此列在我的SQL表中应该是什么数据类型 Error:

我正在开发一个SSIS包,试图从CSV平面文件更新现有的SQL表。除一列外,所有列都已成功更新。如果在truncate时忽略此列,则包将成功完成。所以我知道这是一个截断问题,而不是错误

此列几乎每行都为空。但是,有几行的字段为200-300个字符。我的数据转换任务将此字段标识为DT_WSTR,但根据我在其他地方读到的内容,可能这应该是DT_NTEXT。我两个都试过了,我甚至把DT_WSTR设置为500。但这些都不能解决我的问题。我该怎么修理?此列在我的SQL表中应该是什么数据类型

Error: 0xC02020A1 at Data Flow Task 1, Source - Berkeley812_csv [1]: Data conversion failed. The data conversion for column "Reason for Delay in Transition" returned status value 4 and status text "Text was truncated or one or more characters had no match in the target code page.".
Error: 0xC020902A at Data Flow Task 1, Source - Berkeley812_csv [1]: The "output column "Reason for Delay in Transition" (110)" failed because truncation occurred, and the truncation row disposition on "output column "Reason for Delay in Transition" (110)" specifies failure on truncation. A truncation error occurred on the specified object of the specified component.
Error: 0xC0202092 at Data Flow Task 1, Source - Berkeley812_csv [1]: An error occurred while processing file "D:\ftproot\LocalUser\RyanDaulton\Documents\Berkeley Demographics\Berkeley812.csv" on data row 758.
我怀疑 或者一个或多个字符在目标代码页中不匹配 部分错误

如果删除该列中包含值的行,是否加载? 换句话说,您能识别导致包失败的行吗?
可能是数据太长,也可能是SQL Server不喜欢其中的某些时髦字符。

此错误的一个可能原因是您的分隔符(逗号、分号、管道等)实际出现在数据的一列中。这可能会产生非常误导性的错误消息,通常使用完全不同的列的名称

检查这一点的一种方法是将“坏”行重定向到单独的文件,然后手动检查它们。以下是如何做到这一点的简要说明:


如果这确实是您的问题,那么最好的解决方案是修复源位置的文件以引用数据值和/或使用不在数据中的其他delimeter。

在我的情况下,我的一些行的列数与标题的列数不相同。例如,标题有10列,其中一行有8列或9列。(Columns=计算每行中分隔符的数量)

我以前遇到过这个问题,文件的默认列大小可能不正确。它会将默认大小设置为50个字符,但您正在处理的数据更大。在数据文件的高级设置中,将列大小从50调整为表的列大小。

如果这是来自SQL Server导入向导,请尝试编辑数据源上的列定义,默认为50个字符,但可以更长


数据导入->高级->查看出错的列->将OutputColumnWidth更改为200并重试。

如果所有其他选项都失败,请尝试重新创建数据导入任务和/或连接管理器。如果您在任务最初创建后做了任何更改,这有时可以实现。我知道这相当于重新启动,但是,嘿,如果它起作用,它就起作用了。

我以前遇到过这个问题,您可以转到“选择数据源”页面的“高级”选项卡,单击“建议的类型”按钮,并根据需要设置“行数”。然后,将类型和文本限定值设置为真值


我应用了上述解决方案,可以将数据转换为SQL。

Beth,就像我在上面所说的,当我忽略这一列的截断时,所有这些记录都被更新了。好的,您已经查看了行,没有发现任何异常。它可以是长度。您可以手动将其中一个失败行中的数据复制到表中吗?它可能会给您一条更有意义的错误消息。如何将这些失败行的数据从Excel复制到SQL?请编写insert语句。想法是让它在SSIS之外工作。SQL可能会给你一个更好的消息,或者至少隔离问题进行测试;我知道如何为SQL数据编写insert语句,但不知道如何为Excel编写insert语句。我该怎么做?谢谢,但是我的经理刚刚告诉我我们不再需要这个表/文件了!如果您正在使用SSMS导出然后导入数据,请确保已完成。