(转)如何将数据库从SQL Server迁移到MySQL
2016-01-27 11:49
525 查看
一、迁移Database Schema。
首 先使用Sybase Powerdesigner的逆向工程功能,逆向出SQL Server数据库的物理模型。具体操作是在Powerdesigner中选择“File”,“Reverse Engine”再选择Database,将DBMS选择为SQL Server,如图:
![](http://images.cnblogs.com/cnblogs_com/studyzy/201106/20110613153122716.png)
然后选择数据源,也就是要具体连接到的SQL Server数据库服务器,然后选择要逆向的数据库名,比如选中“WSS_Content_80”如图所示:
![](http://images.cnblogs.com/cnblogs_com/studyzy/201106/20110613153124881.png)
单击确定即可生成物理模型图:
![](http://images.cnblogs.com/cnblogs_com/studyzy/201106/201106131531265539.jpg)
然后单击“Database”菜单下的Change Current DBMS修改当前的DBMS,改为MySQL 5.0,
![](http://images.cnblogs.com/cnblogs_com/studyzy/201106/201106131531278703.png)
单击确定后即可生成MySQL的物理模型 然后单击“Database”菜单下的“Generate Database”生成数据库脚本文件。
接下来是手工修改下生成的脚本的内容。
将其中的dbo.全部替换成空
将create user这样的语句删除掉。
如果有些字符在MySQL中是关键字,那么必须使用“`”(键盘上数字1左边那个符合)符合框起来。
加上MySQL所需要的存储引擎比如每个建表语句后跟上:
ENGINE = INNODB CHARACTER SET utf8 COLLATE utf8_general_ci;
将生成的脚本在MySQL中去运行一次即可创建数据库。
二、迁移数据内容
数据内容只能通过生成INSERT语句的方式来做。
首先使用SSMS的“生成脚本”功能(在数据库上右键,选择“任务”“生成脚本”选项),可以为SQL Server数据库中的数据生成插入脚本。
首先选择要迁移数据的表,这里我们全选所有的表:
![](http://images.cnblogs.com/cnblogs_com/studyzy/201106/201106131531287788.jpg)
然后单击下一步,选择将脚本保存到新的查询窗口:
![](http://images.cnblogs.com/cnblogs_com/studyzy/201106/201106131531308510.jpg)
单击“高级”选项,在高级选项窗口中选择“要编写脚本的数据的类型”为仅限数据:
![](http://images.cnblogs.com/cnblogs_com/studyzy/201106/201106131531311150.png)
然后“确定”再下一步下一步即可生成INSERT脚本文件。
修改生成的脚本文件,主要有以下几项修改:
使用批量替换的方式去掉[ ]这是SQL Server的符合,在MySQL中不用这个。
使用批量替换的方式去掉dbo.
有些单词在MySQL中是关键字的,那么需要使用“`”引起来。
关于Datetime类型的数据,需要手工修改下,SQL Server默认生成的是这样的语句,在MySQL中是没办法解析的:
CAST(0x00009EEF00000000 AS DateTime)
为每一行添加一个;表示一个插入语句结束。这个分号在SQL Server中可以不需要,但是在MySQL中是必须的。简单的方法是使用高级的文本编辑器(比如Notepad++),将\r\n替换为;\r\n即可。
首 先使用Sybase Powerdesigner的逆向工程功能,逆向出SQL Server数据库的物理模型。具体操作是在Powerdesigner中选择“File”,“Reverse Engine”再选择Database,将DBMS选择为SQL Server,如图:
![](http://images.cnblogs.com/cnblogs_com/studyzy/201106/20110613153122716.png)
然后选择数据源,也就是要具体连接到的SQL Server数据库服务器,然后选择要逆向的数据库名,比如选中“WSS_Content_80”如图所示:
![](http://images.cnblogs.com/cnblogs_com/studyzy/201106/20110613153124881.png)
单击确定即可生成物理模型图:
![](http://images.cnblogs.com/cnblogs_com/studyzy/201106/201106131531265539.jpg)
然后单击“Database”菜单下的Change Current DBMS修改当前的DBMS,改为MySQL 5.0,
![](http://images.cnblogs.com/cnblogs_com/studyzy/201106/201106131531278703.png)
单击确定后即可生成MySQL的物理模型 然后单击“Database”菜单下的“Generate Database”生成数据库脚本文件。
接下来是手工修改下生成的脚本的内容。
将其中的dbo.全部替换成空
将create user这样的语句删除掉。
如果有些字符在MySQL中是关键字,那么必须使用“`”(键盘上数字1左边那个符合)符合框起来。
加上MySQL所需要的存储引擎比如每个建表语句后跟上:
ENGINE = INNODB CHARACTER SET utf8 COLLATE utf8_general_ci;
将生成的脚本在MySQL中去运行一次即可创建数据库。
二、迁移数据内容
数据内容只能通过生成INSERT语句的方式来做。
首先使用SSMS的“生成脚本”功能(在数据库上右键,选择“任务”“生成脚本”选项),可以为SQL Server数据库中的数据生成插入脚本。
首先选择要迁移数据的表,这里我们全选所有的表:
![](http://images.cnblogs.com/cnblogs_com/studyzy/201106/201106131531287788.jpg)
然后单击下一步,选择将脚本保存到新的查询窗口:
![](http://images.cnblogs.com/cnblogs_com/studyzy/201106/201106131531308510.jpg)
单击“高级”选项,在高级选项窗口中选择“要编写脚本的数据的类型”为仅限数据:
![](http://images.cnblogs.com/cnblogs_com/studyzy/201106/201106131531311150.png)
然后“确定”再下一步下一步即可生成INSERT脚本文件。
修改生成的脚本文件,主要有以下几项修改:
使用批量替换的方式去掉[ ]这是SQL Server的符合,在MySQL中不用这个。
使用批量替换的方式去掉dbo.
有些单词在MySQL中是关键字的,那么需要使用“`”引起来。
关于Datetime类型的数据,需要手工修改下,SQL Server默认生成的是这样的语句,在MySQL中是没办法解析的:
CAST(0x00009EEF00000000 AS DateTime)
为每一行添加一个;表示一个插入语句结束。这个分号在SQL Server中可以不需要,但是在MySQL中是必须的。简单的方法是使用高级的文本编辑器(比如Notepad++),将\r\n替换为;\r\n即可。
相关文章推荐
- mysql主从复制显示正常,数据没同步现象。
- MySql自动插入当前时间
- is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
- mysql-group_concat
- MySQL的lock tables和unlock tables的用法(转载)
- mysql5.6全量备份
- MySQl的几个配置项
- mysql 日期函数相关 及一个小sql写法
- mysql 常用命令集锦[绝对精华]
- mysql5.7 gtid复制安装及排错
- MySQL5.6.11安装步骤(Windows7 64位)
- MySQL中的LOCATE和POSITION函数使用方法
- MySQL服务安装之二:二进制方式一键安装脚本
- MySQL四舍五入函数ROUND(x)、ROUND(x,y)和TRUNCATE(x,y) 【转】
- mysql中优化sql语句查询的30种方法
- Mysql host '192.168.1.1' is not allowed to connect to this mysql server
- Mysql自定义函数
- mysql 主从不同步处理--数据库初始化
- vs2012利用MFC开发基于对话框的小软件指南(连接Mysql数据库)
- mysql5.7.10下载安装、配置与使用