0

当字段包含逗号字符时,我在 SSIS 中的批量插入失败。我的平面文件源是制表符分隔的,并且在许多情况下,文本字段将包含逗号。例如,UserComment 可能有逗号。这会导致批量插入失败。

如何告诉 SSIS 忽略逗号?我认为它会自动发生,因为行分隔符是 {CR}{LF} 而列分隔符是“Tab”。为什么它在逗号处吠叫?另请注意,我目前没有使用格式文件。

提前致谢。

更新:
这是我在 SSIS 中遇到的错误:
错误:批量插入任务中的 0xC002F304,批量插入任务:发生错误并显示以下错误消息:“批量加载数据转换错误(指定代码页的类型不匹配或无效字符)第 183 行第 5 列(电子邮件地址)。第 182 行第 5 列(电子邮件地址)的批量加载数据转换错误(指定代码页的类型不匹配或无效字符)。批量加载数据转换错误(指定代码页的类型不匹配或无效字符) ) 第 181 行第 5 列(电子邮件地址)。”。任务失败:批量插入任务

它似乎在记录 131988 上失败了,这就是为什么我认为这是因为没有空格的“某事,某事”电子邮件。131988 之前的许多记录都很好。

131988  01  MEMPHIS, TN     someone@somewhere.com  
131988  02  NORTH LITTLE ROCK, AR       someone@somewhere.com,someone1@somewhere1.com  
131988  03  HOUSTON, TX     someone@somewhere.com,someone1@somewhere1.com  
4

2 回答 2

1

我怀疑逗号或@ 符号被称为“无效字符”。

我看到在包含电子邮件地址的字段之前的输入记录中有两个选项卡,因此电子邮件地址列将是第五列。但是当错误消息提到“第 5 列”时,它可能使用从零开始的索引,因此电子邮件列只有索引 4。是否有选项卡和另一列?也许无效字符在那里。

我怀疑在导致错误的任何列中都嵌入了一个不可见的坏字符。在剪切和粘贴电子邮件地址行时,我经常会捡起坏字符,所以这可能是一个嫌疑犯。

自行运行失败的行以确保它仍然失败。

然后将其复制到记事本中,并执行“另存为”,并将编码设置为 ANSI。(如果有错误的字符,它可能会在此时抱怨。)使用“另存为”文件作为新的导入文件。此时,您应该能够合理地确信“所见即所得”,并且导入文件中没有嵌入不可见字符。

如果这是问题所在,您将需要某种方法来验证未来的导入文件是否干净,或者在导入过程中以某种方式处理它们。

(我想你已经检查了目标列的长度是可以的。那肯定会是一个很好的选择。)

于 2013-04-08T18:12:44.260 回答
0

“指定代码页的类型不匹配或无效字符”是误导性错误消息。源表的字段长度超过了目标表的指定长度,因此出现错误。调整长度后,一切正常。

于 2013-04-08T18:15:27.587 回答