出现场景: 批量插入数据的时候出现这个问题。

原因分析:某个数据的长度应该是大于这个数据对应的列的定义长度。

所以一一检查到底是那个列的长度超出了。

第一种方法:

——————————2017-1-3更新——————————————

从 bcp 客户端收到一个对 colid x 无效的列长度。colid x 是多少说明是第x+1列出了问题,比如colid 1说明是第二列。那么一一排查这列的数据就可以找到问题所在。

如果数据太多的话可以直接修改数据库的字段,把字段的数据类型的长度增大就行了。比如原先varchar(50)那么可以变成varchar(100)再试一下。

——————————2017-1-3更新——————————————

网络提供了这个种方法,可以查找具体是哪个列的长度超出了。

public void GetFiledSizeTest()
{
string fileFullName = @"D:\GameLogs\2015-01-30_000000\Login.log";
//每列的最大长度
Dictionary<int, int> dicFieldLength = new Dictionary<int, int>();
//每列的最大长度所在行号
Dictionary<int, int> dicMaxFieldLenthRowNum = new Dictionary<int, int>();
for (int i = ; i < ; i++)
{
dicFieldLength.Add(i, );
dicMaxFieldLenthRowNum.Add(i, );
}
if (new FileInfo(fileFullName).Length > )
{
using (StreamReader sr = new StreamReader(fileFullName, Encoding.UTF8))
{
int rowNum = ;
while (sr.Peek() > -)
{
string strRow = sr.ReadLine();
rowNum++;
object[] objRow = strRow.Split(',');
for (int i = ; i < objRow.Length; i++)
{
var len=objRow[i].ToString().Length; if (dicFieldLength[i] < len)
{
dicFieldLength[i] = len;
dicMaxFieldLenthRowNum[i] = rowNum;
} }
}
}
}
}

——————————2017-9-4更新——————————————

注意检查这几项:1、插入的某一列的数据的长度是否大于数据库列的定义的长度?

2、数据库某一列是否不为空,而插入的数据却为空

3、当用sqlbulkcopy批量插入数据时,内存数据表DataTable的列和数据库的列是否一致。

从 bcp 客户端收到一个对 colid x 无效的列长度。的更多相关文章

  1. 使用BulkCopy报错 从 bcp 客户端收到一个对 colid 19 无效的列长度

    ====System.Data.SqlClient.SqlException: 从 bcp 客户端收到一个对 colid 19 无效的列长度. 从0开始数,数据库上表的第19列

  2. SqlBulkCopy 从bcp客户端收到一个对 colid 1 无效的列长度。

    出现这个错误,大家都知道是因为字段长度超出了,但是这里需要注意的是,colid 1指的是数据库表的第1列,而不是C#中DataTable的第1列. 比如C#中DataTable的列顺序为{" ...

  3. SqlBulkCopy-从 bcp 客户端收到一个对 colid 1 无效的列长度

    经过研究,问题是因为tatatable中的colid列1的数据字段长度超过了数据表中定义的字段长度. 解决方法就是将数据库该字段的长度增大问题就解决了.

  4. [异常记录(三)] 从 bcp 客户端收到一个对 colid 12 无效的列长度

    这个问题是使用SqlBulkCopy拷贝数据,字符串长度超出数据类型长度导致的. 处理过程中对长度进行判断并截取就OK了. *注:SqlBulkCopy 这货 要求ColumnMappings 列的大 ...

  5. Mybatis:使用bean传值,当传入值为Null时,提示“无效的列类型”的解决办法

    问题描述:在使用mybatis对数据库执行更新操作时,parameterType为某个具体的bean,而bean中传入的参数为null时,抛出异常如下:org.mybatis.spring.MyBat ...

  6. oracle: jdbcTypeForNull configuration property. Cause: java.sql.SQLException: 无效的列类型: 1111

    https://www.cnblogs.com/mmlw/p/5808072.html org.mybatis.spring.MyBatisSystemException: nested except ...

  7. [转]Mybatis出现:无效的列类型: 1111 错误

    原文地址:http://www.cnblogs.com/sdjnzqr/p/4304874.html 在使用Mybatis时,不同的xml配置文件,有的会提示:无效的列类型: 1111 比如这个sql ...

  8. [转]java.sql.SQLException: 无效的列索引

    原文地址:http://blog.sina.com.cn/s/blog_6bc811e401011a17.html java.sql.SQLException: 无效的列索引 “无效的列索引”其实是个 ...

  9. java.sql.SQLException: 无效的列索引

    java.sql.SQLException: 无效的列索引 "无效的列索引"其实是个低级的错误,原因无非几个: 1.sql串的?号数目和提供的变量数目不一致: 例如:jdbcTem ...

随机推荐

  1. shell 随机从文件中抽取若干行

    shuf -n5 main.txt sort -R main.txt | head -5 awk -vN=5 -vC="`wc -l file`" 'BEGIN{srand();w ...

  2. Python入门-多行语句

    1. Python语句中一般以新行作为为语句的结束符. 但是我们可以使用斜杠( \)将一行的语句分为多行显示. 2. 语句中包含[], {} 或 () 括号就不需要使用多行连接符. days = [' ...

  3. NoSQL数据库:数据的一致性

    NoSQL数据库:数据的一致性 读取一致性 强一致性 在任何时间访问集群中任一结点,得到的数据结果一致: 用户一致性 对同一用户,访问集群期间得到的数据一致: 解决用户一致性:使用粘性会话,将会话绑定 ...

  4. python_way day17 html-day3 前端插件(fontawsome,easyui,bootstrap,jqueryui,bxslider,jquerylazyload),web框架

    python_way day17 一.模板插件 图标的插件 fontawsome: 后台管理: easyui jqueryui 很多网站都会用: bootstrap :引入jQuery:(2.x,1. ...

  5. 加速chrome之Vimium快捷键

    使用Vimium一段时间,不能完全学习所有的快捷键.但是对这种简约,vim风格的设计还是非常敬佩. 下面是一些总结: Vimium快捷键 WIKI: 是一个开源的google chrome的扩展插件, ...

  6. Android Fast ImageLoader

    前段时间写的Android平台开源项目:Fast ImageLoader,现在分享给大家 源码地址:https://github.com/cumtkangyi/Android-Fast-ImageLo ...

  7. 初识redis——mac下搭建redis环境

    一.redis简介 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合)和zset(有 ...

  8. Asp.net上传文件Request.files获取不到文件

    使用ftp上传文件,并且Request.files获取文件,今天发现获取到的文件个数始终是0个,查了下原来form标签中需加入enctype=”multipart/form-data”,呵呵了 < ...

  9. maven之详解继承与聚合

    说到聚合与继承我们都很熟悉,maven同样也具备这样的设计原则,下面我们来看一下Maven的pom如何进行聚合与继承的配置实现. 一.为什么要聚合? 随着技术的飞速发展和各类用户对软件的要求越来越高, ...

  10. HTTP POST GET 本质区别详解

    HTTP POST GET 本质区别详解 一 原理区别 一般在浏览器中输入网址访问资源都是通过GET方式:在FORM提交中,可以通过Method指定提交方式为GET或者POST,默认为GET提交 Ht ...