今日在导入Excel后要生成一张表,将Excel表内容转化为数据库中表内容时使用到System.Data.SqlClient.SqlBulkCopy这个类的对象,其中有个ColumnMapping.Add的对象方法,
一开始使用的不是sqlbulk.ColumnMappings.Add("题号", "题号");而是sqlbulk.ColumnMappings.Add(1, 1);
编译时出现:
给定的 ColumnMapping 与源或目标中的任意列均不匹配 错误
在百度了之后发现要用sqlbulk.ColumnMappings.Add("题号", "题号")这样的格式保证列与列的正确匹配。在用了这个方法之后又出现了新的问题 : “ 从bcp 客户端收到的列长度无效” 错误。
再次百度,得到解释:源表数据不符合目标表数据类型,或者超出目标表定义长度 而导致的原因。
修改创建表语句为
自此编译通过,完成从Excel到sqlserver中的导入。
以此记录下来,虽然都是百度来的知识,但是成长却是属于自己的。
在使用SqlBulkCopy将Excel数据导入SQL Server时,遇到ColumnMapping错误和“从bcp客户端收到的列长度无效”的问题。解决方法包括确保ColumnMappings的列名匹配,并调整目标表字段长度以适应源数据。最终通过修改创建表的SQL语句,成功完成数据导入。
1009

被折叠的 条评论
为什么被折叠?



