社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
昨天将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
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!