我正在开发一个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.
Run Code Online (Sandbox Code Playgroud)
Pon*_*ife 23
此错误的一个可能原因是您的分隔符(逗号,分号,管道,等等)实际出现在一列中的数据中.这可能会产生非常误导性的错误消息,通常使用完全不同的列的名称.
检查此问题的一种方法是将"坏"行重定向到单独的文件,然后手动检查它们.以下是如何执行此操作的简要说明:
http://redmondmag.com/articles/2010/04/12/log-error-rows-ssis.aspx
如果这确实是您的问题,那么最好的解决方案是在源处修复文件以引用数据值和/或使用不在数据中的不同分隔符.
Bet*_*eth 10
我怀疑 一个或多个字符 在错误的目标代码页部分中没有匹配.
如果删除该列中包含值的行,是否会加载?换句话说,你能识别导致包失败的行吗?它可能是数据太长,或者可能是SQL Server不喜欢的那种时髦的角色.
如果这是来自 SQL Server 导入向导,请尝试编辑数据源上列的定义,默认情况下为 50 个字符,但可以更长。
Data Soruce -> Advanced -> Look at the column that goes in error -> change OutputColumnWidth to 200 and try again.