怎么快速迁移数据从 MSSQL 到 MySQL

Posted

tags:

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

一、迁移Database Schema。
首先使用Sybase Powerdesigner的逆向工程功能,逆向出SQL Server数据库的物理模型。具体操作是在Powerdesigner中选择“File”,“Reverse Engine”再选择Database,将DBMS选择为SQL Server

然后选择数据源,也就是要具体连接到的SQL Server数据库服务器,然后选择要逆向的数据库名,比如选中“WSS_Content_80”

单击确定即可生成物理模型图,然后单击“Database”菜单下的Change Current DBMS修改当前的DBMS,改为mysql 5.0,单击确定后即可生成MySQL的物理模型 然后单击“Database”菜单下的“Generate Database”生成数据库脚本文件。

接下来手工修改下生成的脚本的内容。将其中的dbo.全部替换成空,将create user这样的语句删除掉。
如果有些字符在MySQL中是关键字,那么必须使用“`”(键盘上数字1左边那个符合)符合框起来。
加上MySQL所需要的存储引擎比如每个建表语句后跟上:
ENGINE = INNODB CHARACTER SET utf8 COLLATE utf8_general_ci;将生成的脚本在MySQL中去运行一次即可创建数据库。

二、迁移数据内容
数据内容只能通过生成INSERT语句的方式来做。
首先使用SSMS的“生成脚本”功能(在数据库上右键,选择“任务”“生成脚本”选项),可以为SQL Server数据库中的数据生成插入脚本。

首先选择要迁移数据的表,这里我们全选所有的表

然后单击下一步,选择将脚本保存到新的查询窗口

单击“高级”选项,在高级选项窗口中选择“要编写脚本的数据的类型”为仅限数据

然后“确定”再下一步下一步即可生成INSERT脚本文件。
修改生成的脚本文件,主要有以下几项修改:
使用批量替换的方式去掉[ ]这是SQL Server的符合,在MySQL中不用这个。
使用批量替换的方式去掉dbo.
有些单词在MySQL中是关键字的,那么需要使用“`”引起来。
关于Datetime类型的数据,需要手工修改下,SQL Server默认生成的是这样的语句,在MySQL中是没办法解析的:
CAST(0x00009EEF00000000 AS DateTime)
为每一行添加一个;表示一个插入语句结束。这个分号在SQL Server中可以不需要,但是在MySQL中是必须的。简单的方法是使用高级的文本编辑器(比如Notepad++),将\r\n替换为;\r\n即可。
参考技术A 首先使用Sybase Powerdesigner的逆向工程功能,逆向出SQL Server数据库的物理模型。具体操作是在Powerdesigner中选择“File”,“Reverse Engine”再选择Database,将DBMS选择为SQL Server
然后选择数据源,也就是要具体连接到的SQL Server数据库服务器,然后选择要逆向的数据库名,比如选中“WSS_Content_80”
单击确定即可生成物理模型图,然后单击“Database”菜单下的Change Current DBMS修改当前的DBMS,改为MySQL 5.0,单击确定后即可生成MySQL的物理模型 然后单击“Database”菜单下的“Generate Database”生成数据库脚本文件。本回答被提问者采纳
参考技术B mssql 数据导出为sql 方法是在mssql数据库管理平台 选中数据库,鼠标右键菜单选 所有任务-》生成脚本 ,在对话框中注意选上生成数据脚本,否则只有表结构脚本。
把生成的脚本通过记事本打开,通过查找替换做些修改,使符合mysql语法, 主要是 如Go等替换为空格, 每个sql语句后加上;号, 字段类型smalldatetime 改为 datetime, uniqueidentifier 改为 char(36) IDENTITY(1,1) 改为 AUTO_INCREMENT【dao】. 及中括号去掉等;
如果表不多,可以把编辑好的适合mysql中运行的sql 一个表一个表的复制执行建立表结构和插入数据 及时监控和修正错误语句
每次正确执行的sql另行保存到一个记事本中,以便以后作为备份使用

从 MSSQL 迁移到 postgresql 或 mysql [关闭]

【中文标题】从 MSSQL 迁移到 postgresql 或 mysql [关闭]【英文标题】:Migrating from MSSQL to postgresql OR mysql [closed] 【发布时间】:2012-02-28 05:07:23 【问题描述】:

我正在开发 .NET 环境。 由于 sql server express 限制(最大 4gb),我想切换一个免费的解决方案。 我正在检查并发现 postgresql 或 mysql 将是一个很好的解决方案。

由于我只在 MsSql 上工作,我想了解哪个数据库对我来说更容易迁移所有现有数据。 还有哪个数据库语法(postgresql OR mysql)更接近 sql MsSql 语法和结构。 这样我可以更快地学习它。

感谢您的帮助。

【问题讨论】:

如果 4GB 上限是推动迁移的唯一因素,Express Edition 的最大数据库大小已增加到 10GB PostgreSQL 语法非常不同,因为它严格遵循 ANSI 标准(MS 没有)。 MySQL 非常不同,因为它不遵循 ANSI 标准(并且功能较少) 【参考方案1】:

嗯...您会发现其中任何一个都存在语言差异。不久前我也有同样的选择,但由于其庞大的社区,我最终选择了 MySql。

当然,如果您唯一的原因是 4gb 的限制,我不建议您切换(但这只是我)。您应该升级到 SQL 2008 / 2012,它们都有 10gb 的限制。此外,如果您必须知道,还有其他限制,例如仅使用 1 个处理器,我相信还有 RAM 限制。无论如何,对于小型数据库 (

如果您在从 MSSQL 迁移到 MySQL 方面需要帮助,您应该在 Google 上搜索“MSSQL 到 MySQL 迁移工具包”(我这样做了)。这相当容易,您很快就能完成过渡,而且很可能没有任何问题。

祝你好运

【讨论】:

【参考方案2】:

MySQL Workbench 有一个迁移向导。 Is 有一些 MS SQL 的先决条件,在向导帮助文档中解释得非常清楚。 http://www.mysql.com/products/workbench/

【讨论】:

以上是关于怎么快速迁移数据从 MSSQL 到 MySQL的主要内容,如果未能解决你的问题,请参考以下文章

仅将表数据从 MSSQL 迁移到 MySQL

将数据库数据从 mssql 迁移到 mysql

从 MSSQL 迁移到 postgresql 或 mysql [关闭]

MSSQL 到 MySQL 数据库迁移

MSSQL 到 MySQL 迁移 - UCS-2 代理对的字符编码问题,如何从 MSSQL 数据库中删除这些?

将大表从 MySql 迁移到 MsSql