excel数据导入sqlserver中时报文本被截断,或者一个或多个字符在目标代码页中没有匹配项 - Go语言中文社区

excel数据导入sqlserver中时报文本被截断,或者一个或多个字符在目标代码页中没有匹配项



昨天将excel表格中的数据导入数据库时遇到以上问题,老是提示数据被截断之类的错误,google了一下,出来好多解决方案,什么修改注册表啊,什么excel格式不对了,修改excel文件后缀了,总之就是很多方法。但是一一实践下来就是不行。尤其是我们公司那个加密系统,你修改一下表格,它又给你加密了,又得去申请解密,不胜其烦。

好在黄天不负有心人,最后终于找到了解决办法:那就是向你要导入数据库的excel表格中手动加入一行,最好是将加入的那一行的字符串写足够多一点,这样就能生成合适的数据类型。

原因分析:当我们将excel文件导入数据库时会在数据库自动生成一张表,表中的字段对应excel中的每一列,那么问题来了,每一列的数据类型及大小是怎么来的呢,excel导入数据库时默认字段类型是varchar型,而大小的确定时根据你excel表格中数据的前三行,当然有的说是前八行,这个看要看你电脑注册表上是多少了。当然有的人说改一下注册表不就好了,但是我根据网上的目录:

如果是:Jet引擎. HKEY_LOCAL_MACHINESOFTWAREMicrosoftJet4.0EnginesExcel

如果是:ACE引擎.

HKEY_LOCAL_MACHINESOFTWAREMicrosoftOffice12.0Access Connectivity EngineEnginesExcel
然后找到 TypeGuessRows这个项.默认为8的.修改为0.

然后我发现了,居然找不到这个目录:就没办法通过注册表去修改了。数据被截断究其原因无非是字段大小设置小了,导致这一列中有的数据没法放入这个字段,那么解决办法就出来:我们是不是可以在excel表格手动添加第一行,将字符尽量的写大,sqlserver在判断的时候就会自动生成相应的数据类型的大小!导入数据库之后将第一行数据删掉就可以了。这样问题就圆满解决了。

要将一张表中的数据复制到另一张表:

已经创建表

1. table1和table2表结构相同

use b

insert into table2 select * from a.dbo.table1

2. table1和table2表结构不相同

use b

insert into table2(c1,c2) select c1,c2 from a.dbo.table1

coolxiaoyi:c1,c2为需要复制的列。

3. 如果还没有创建表table2,可以直接将table1的表结构和记录都复制到数据库b中

use b

select * into table2 from a.dbo.table1




版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/tangjue18246068217/article/details/52100228
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2019-08-27 19:36:16
  • 阅读 ( 2263 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

推荐文章

猜你喜欢