数据库迁移(sqlserver至mysql)

Posted 卑微程序员的求生路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库迁移(sqlserver至mysql)相关的知识,希望对你有一定的参考价值。

    最近项目在做一个大迁移,项目从dobbo项目迁至成springcloud项目,同时内部也有一个很大的转变,从架构开始一整个的转型,而我目前负责的是一个数据库的转型。

    就如标题所说,sqlserver转至成mysql。其实sql的转变区别不大,更何况是sqlserver和mysql,他们的相似度大约有80%了吧。可是毕竟是个大项目,怎么可能只有那些普通的sql语句呢是吧。

    那么所说一下目前存在的几个需要改动的地方:

    其一:一个很简单的语句,专业术语喜欢叫做分页,懂了吧

            在sqlserver里面是写在 select from 之中的。比如 查询 A表所有

            select * from A,那么只要取前面几个的话就是 select top 1 * from A ,取第一个

            而在mysql中它却不是这样的,它的关键字是limit,同样

            select * from A limit 1 

        

            这两句效果一样但是语句不一样,这就是一个小改变。


   其二:里面的函数库,虽然说函数库基本都是一样的(目前我没看到两个有不同的函数库哈),但是呢函数库一样语法可就不一样啦。说一下一对双胞胎?cast和Convert,首先说cast

        cast在sqlserver中它可以作为

            cast('值' , "数据类型")

            或者 

            cast('值' as "数据类型")

       但是在mysql中它只有一个语法那就是 cast('值' as "数据类型")

       

    下面说到另一个Convert,刚刚是不是提到双胞胎了,对,它的作用和cast很相似,也是替换类型的,或者说类型转换

    Convert在sqlserver中和在mysql中差距有一点大的样子,首先sqlserver可以使用varchar类型,但是在mysql中varchar是会报错的,它只能存在char类型,别看varchar和char类型都一样是字符类型,但是varchar它中文也算一个占位,英文也算一个占位,而char可不一样,char的中文算两个,空间完全不一样了。

    而且我发现,它的语法还有一些问题比如sqlserver中是 Convert(varchar(100),'字段',120),而mysql却是 Convert('字段',char(100)),语法这样来说还是有些差距的。


        以上是我目前遇到的一些问题,之后会继续转变,如果有一些新的我会继续更新出来,敬请期待。

以上是关于数据库迁移(sqlserver至mysql)的主要内容,如果未能解决你的问题,请参考以下文章

主流 SQLServer 迁移到 MySQL 工具对比

闲来无事,编写一个数据迁移小工具

SQL Server GUID 数据迁移至MongoDB后怎样查看?

如何把sqlserver数据迁移到mysql数据库及需要注意事项

MySQL 数据文件迁移至新硬盘

Oracle数据迁移至MySQL