sqlserver与mysql中vachar(n)中遇到的坑

 

前两天在做将mysql的数据表导入到sqlserver当中。

本人比较愚笨,操作方法 是先将mysql的数据表到处为insert脚本,再在sqlserver中执行sql脚本

在网上看了一下那些方法 ,感觉很迷,如果有更好更简单的办法请大神指教。毕竟这种办法真的还是挺痛苦的。比如我有一张表的数据有10W条。哇塞,根本不能直接插入,需要分段来,而且还要去掉mysql字段会自动加的分号。数据多了真的很痛苦,电脑有时候还要直接卡死。

遇到了 两个问题。

第一:如果mysql中的主键是自动增长的话,直接插入会报:

解决办法,在插入之前写上这么一句:SET IDENTITY_INSERT table ON

当然在insert完成之后不要忘记关闭: SET  IDENTITY_INSERT table OFF

如果不关闭的话 你在下次再想对另外一张表这样操作的时候,又会报错

所以,你打开了就要记得关上。

第二:vachar(n)在两种数据库中的区别。

在导入数据的时候,我就明显感觉到mysql中的vachar(400)要比sqlserver中的vachar(400)存入的数据更多。如果数据库中字段长度不够的时候就会报:将截断字符串或二进制数据

然后就谷歌了一下到底是什么区别。

然后得知 在mysql5.0版本以上,vachar(n)可以存放的 字符个数就是n,而sqlserver中的vachar(n),这里的n表示的是 字节数,所以sqlserver中的 vachar(n)就只能存放mysql的 一半吧。

要想将mysql的vachar(n)转换到sqlserver中,最好sqlserver存入vachar(2n)吧,这样能保证你的所有数据都不会报“将截断字符串或二进制数据”这个错误

这里有一篇博文介绍了mysql中vachar的 详情,个人感觉还比较可以,附上链接:

MySql中的varchar类型:http://www.cnblogs.com/doit8791/archive/2012/05/28/2522556.html

 

posted @ 2017-08-11 10:55  瓶子里的蝴蝶  阅读(517)  评论(0编辑  收藏  举报