SqlBulkCopy异常,找到colid

时间:2013-08-10 02:31:59

标签: sql sqlbulkcopy

使用SqlBulkCopy并获取此异常:

  

从bcp客户端收到colid 30的无效列长度。

我几个小时以来一直在撞击这个。我知道哪一行有问题,但我不知道哪一列" colid 30"是。数据表中有178列。所有值似乎都是正确的,我没有看到任何比我数据库中任何列数据类型更长的值。

此数据库包含房产列表,目前有超过300万条记录,所有记录都很好。

有没有办法确定colid 30是什么?或者有没有办法查看bcp提交给数据库的实际SQL?

3 个答案:

答案 0 :(得分:7)

我希望这也有助于解决别人的问题。

错误是因为数据表中的一个字符串/ varchar字段有一个分号“;”在它的价值。显然你需要在插入之前手动转义这些!

我在所有行/列中进行了循环,然后执行了操作:

string.Replace(";", "CHAR(59)");

之后,一切顺利插入。

答案 1 :(得分:0)

检查要进行批量插入的表中列的大小。可能需要扩展varchar或其他字符串列。

例如,增加尺寸30到50 =>

ALTER TABLE [dbo].[TableName]
ALTER COLUMN [ColumnName] Varchar(50)

答案 2 :(得分:0)

在我的情况下,相同的问题消息出现在colid 53上。实际上,问题出现在第54列上。我想,您还应该检查下一列以与目标表进行大小比较。希望对您有帮助。