在项目开发中,有时由于项目开始时候使用的数据库是SQL Server,后来把存储的数据库调整为MySQL,所以需要把SQL Server的数据迁移到MySQL。下面是小编日常整理的一种sqlserver数据库迁移的方法。
一、SQL Server中常用数据类型与MySQL不同的地方
二、将SQL Server数据迁移到MySQL需要注意的一些问题
1、唯一索引的不同,sql server的唯一索引的字段只能允许存在一个null值,而mysql,一直oracle中唯一索引对应的字段都允许存在多个null值。
2、存储过程的语法存在很大的不同,存储过程的迁移是最麻烦的,需要仔细修改。
3、程序中部分写的SQL语句由于语法的不同也要相应的修改。
三、将SQL Server数据迁移到MySQL的常见方法
1、使用 SQLyog 迁移
在开始菜单的运行框中输入dtswiz,然后选择源数据源和目标数据源,例如:如果是从SQLServer中导出到Excel中,那么那么需要在其中输入SQL语句或者选择指定数据库中的一个或多个表,然后再指定Excel的路径和文件名,如果是从Excel导入到SQLServer中,就简单一些,选择好具体的Excel文档后,再选择其中的某一个Sheet(工作表),然后再设置SQLServer的指定数据库即可,还可以从SQLServer中的一个数据库导入到SQLServer的另一个数据库中,方法类似。
虽然关系数据库已有诸多不便,但以NoSQL目前的发展状况要代替他还为时过早,并且至少从目前来看,他们也各有所长,谁也替代不了谁。SQL语句的方便在许多情况下还是相当实用,SQL数据库软件的强壮程度度也是NoSQL数据库软件目前无法达到的。NoSQL在许多领域,比如高速缓存,高速消息队列方面有着传统关系数据库无法比拟的优势,他们将在今后一些年并驾齐驱,至于未来的方向还得看在实际使用和进一步开发中遇到的问题。这里有一篇译自Redis(一种近年来发展迅速的NoSQL数据库)官方网站的介绍文章,对NoSQL的特性可窥一斑。
《十五分钟介绍 Redis 数据结构》 >
MySQL
关系型数据库。
在不同的引擎上有不同 的存储方式。
查询语句是使用传统的sql语句,拥有较为成熟的体系,成熟度很高。
开源数据库的份额在不断增加,mysql的份额页在持续增长。
缺点就是在海量数据处理的时候效率会显著变慢。
Mongodb
非关系型数据库(nosql ),属于文档型数据库。先解释一下文档的数据库,即可以存放xml、json、bson类型系那个的数据。这些数据具备自述性(self-describing),呈现分层的树状数据结构。数据结构由键值(key=>value)对组成。
存储方式:虚拟内存+持久化。
查询语句:是独特的Mongodb的查询方式。
适合场景:事件的记录,内容管理或者博客平台等等。
架构特点:可以通过副本集,以及分片来实现高可用。
数据处理:数据是存储在硬盘上的,只不过需要经常读取的数据会被加载到内存中,将数据存储在物理内存中,从而达到高速读写。
成熟度与广泛度:新兴数据库,成熟度较低,Nosql数据库中最为接近关系型数据库,比较完善的DB之一,适用人群不断在增长。
优势:
快速!在适量级的内存的Mongodb的性能是非常迅速的,它将热数据存储在物理内存中,使得热数据的读写变得十分快,
高扩展!
自身的Failover机制!
json的存储格式!
Mysql和Mongodb应用场景:
1如果需要将mongodb作为后端db来代替mysql使用,即这里mysql与mongodb 属于平行级别,那么,这样的使用可能有以下几种情况的考量:
(1)mongodb所负责部分以文档形式存储,能够有较好的代码亲和性,json格式的直接写入方便。(如日志之类)
(2)从data models设计阶段就将原子性考虑于其中,无需事务之类的辅助。开发用如nodejs之类的语言来进行开发,对开发比较方便。
(3)mongodb本身的failover机制,无需使用如MHA之类的方式实现。
2将mongodb作为类似redis ,memcache来做缓存db,为mysql提供服务,或是后端日志收集分析。 考虑到mongodb属于nosql型数据库,sql语句与数据结构不如mysql那么亲和 ,也会有很多时候将mongodb做为辅助mysql而使用的类redis memcache 之类的缓存db来使用。 亦或是仅作日志收集分析
a如果需要将mongodb作为后端db来代替mysql使用,即这里mysql与mongodb
属于平行级别,那么,这样的使用可能有以下几种情况的考量:
(1)mongodb所负责部分以文档形式存储,能够有较好的代码亲和性,json格式的直接写入方便。(如日志之类)
(2)从data
models设计阶段就将原子性考虑于其中,无需事务之类的辅助。开发用如nodejs之类的语言来进行开发,对开发比较方便。
(3)mongodb本身的failover机制,无需使用如MHA之类的方式实现。
这种情况也是不少的,我手上的游戏就是有nodejs+mongodb的,用户总量也是千万级别的,流水什么还不错。
b将mongodb作为类似redis
,memcache来做缓存db,为mysql提供服务,或是后端日志收集分析。
考虑到mongodb属于nosql型数据库,sql语句与数据结构不如mysql那么亲和
,也会有很多时候将mongodb做为辅助mysql而使用的类redis
memcache
之类的缓存db来使用。
亦或是仅作日志收集分析。
1、数据库模型:mysql是关系型数据库,mongodb是非关系型数据库
2、存储方式:mysql不同的存储引擎有不同的存储方式,mongodb为虚拟内存+持久化
3、查询语句:mysql为传统的sql语句,mongodb有独特的自有查询方式
4、架构特点:mysql有常见的单点,m-s、mha、mmm、cluster等架构特点,mongodb可以通过副本集以及分片来实现高可用
5、数据处理方式:mysql不同的引擎有各自的特点,mongodb基于内存,将数据存储在物理内存中,从而达到高速读写
6、成熟度:mysql拥有较为成熟的体系,成熟度较高,mongodb新兴数据库,成熟度较低
以上就是关于如何将MongoDB数据库的数据迁移到MySQL数据库中全部的内容,包括:如何将MongoDB数据库的数据迁移到MySQL数据库中、如何从MongoDB导入/导出数据、MongoDB,会代表NoSQL,推翻SQL机制吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)