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

本文分享了从MySQL迁移到SQLServer的经验,包括解决主键自动增长问题的方法及varchar类型在两种数据库中的区别,提供了实用的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

前两天在做将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

 

转载于:https://www.cnblogs.com/tangyonghui/p/7344749.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值