【问题标题】:SqlBulkCopy exception, find the colidSqlBulkCopy 异常,找到 colid
【发布时间】:2013-08-10 02:31:58
【问题描述】:

使用 SqlBulkCopy 并获得此异常:

从 bcp 客户端收到一个无效的列长度,用于 colid 30。

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

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

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

【问题讨论】:

  • 这可能会对您有所帮助:SqlBulkCopy and the "colid" error。我没有亲自遇到过这个问题,所以我不知道链接是否回答了它;否则我会添加它作为答案。

标签: sql sqlbulkcopy


【解决方案1】:

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

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

我对所有行/列进行了循环,然后:

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

之后,一切顺利插入。

【讨论】:

    【解决方案2】:

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

    例如,将大小从 30 增加到 50 =>

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-08-26
        • 1970-01-01
        • 2015-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-06
        • 2019-07-27
        相关资源
        最近更新 更多