使用SqlBulkCopy并获取此异常:
从bcp客户端收到colid 30的无效列长度。
我几个小时以来一直在撞击这个。我知道哪一行有问题,但我不知道哪一列" colid 30"是。数据表中有178列。所有值似乎都是正确的,我没有看到任何比我数据库中任何列数据类型更长的值。
此数据库包含房产列表,目前有超过300万条记录,所有记录都很好。
有没有办法确定colid 30是什么?或者有没有办法查看bcp提交给数据库的实际SQL?
答案 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列上。我想,您还应该检查下一列以与目标表进行大小比较。希望对您有帮助。