SSIS平面文件错误 "文本被截断或一个或多个字符在目标代码页中没有匹配。"

6
我正在处理一个SSIS项目。我有一个Flat File Source (csv) 和 OLE DB作为目标。我有一个名为WrapUpName的列,数据类型为Unicode string [DT_WSTR]Outputcolumnwidth - 50,只包含以下其中之一的数据Successfull,Unsuccessfull,ACPS FC: Always Busy or Ringing or Unattended,目标列是nvarchar(50)
我遇到了以下错误信息:

数据转换失败。列“WrapUpName”的数据转换返回状态值4和状态文本“文本被截断或一个或多个字符在目标代码页中没有匹配项”。

这真的很奇怪,因为检查错误行时,列WrapUpName中的数据是Successfull,我的IS可以正确处理。经过研究,我知道解决方法是将code page设置为UTF-8,我已经从一开始就这样做了,或者调整数据类型的长度,这也是正确的,但我想知道是什么触发了错误。

1
代码页之间不匹配,可能是UTF-8和UTF-16引起的问题。您还可以在截断或错误上更改属性为“忽略”。您也试过这样做了吗? - TheEsnSiavashi
@TheEsisia 还没有。我甚至不知道它的存在。我会看一下。请发布您的答案,以便我可以投票并接受它,如果您的答案解决了问题。 - Vian Ojeda Garcia
@TheEsisia 这样做有什么不利影响吗?我的数据还能被插入吗? - Vian Ojeda Garcia
如果您已经验证了数据,那么就不应该有问题。我看到您说数据的长度不超过50个字符,所以不会截断。但最好先进行测试。 - TheEsnSiavashi
我遇到了在文本列中有表情符号 () 的情况,导致与您一样的错误。自从我从文本中删除了表情符号后,我的CSV导出就再也没有出现过问题。 - Hugues Gauthier
2个回答

4

1
是的,我认为在我找到的三个答案中,这是最适合我的情况的答案。非常感谢。 - Vian Ojeda Garcia
我遇到了与上述完全相同的问题。最终找到了上面提供的链接起作用。令我困惑的是,当我将每个列的最大长度验证为123时,SSIS为什么会“截断”一个列,进入varchar(250)?这不应该发生,但至少这是一个解决方法。谢谢。 - Clint

0

在我的情况下,我忘记在导出向导的 SQL Server“选择源”页面中勾选“Unicode”复选框。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接