91

我正在尝试将 SQL Server 数据库备份文件 ( .bak) 转换为 MySQL。这个问题和答案非常有用,我已经成功导入数据库,但现在卡在导出到 MySQL 上。

建议使用MySQL Migration Toolkit,但似乎已被MySQL Workbench取代。是否可以像迁移工具一样使用 MySQL Workbench 从 SQL Server 迁移?

还是迁移工具包在某处仍然可用?

4

11 回答 11

52

您可以使用MySQL Workbench,它提供了一种以更少的时间和精力将数据和应用程序从 Microsoft SQL Server 快速迁移到 MySQL 的方法。

这个工具有很多很酷的功能,比如:

  • 数据库迁移- 支持从 Microsoft SQL Server、Sybase ASE 和 PostgreSQL 迁移。
  • 迁移项目管理- 允许配置、复制、编辑、执行和安排迁移。

阅读更多 http://www.mysql.com/products/workbench/migrate/

于 2013-02-14T09:29:29.950 回答
24

我使用sqlog从 mssql 迁移到 mysql。我尝试了迁移工具包和工作台,但喜欢 sqlyog 的SJA。我可以安排导入过程,并且可以使用 WHERE 子句进行增量导入。

在此处输入图像描述

于 2012-08-03T09:22:07.017 回答
7

PhpMyAdmin 有一个导入向导,让您也可以导入 MSSQL 文件类型。

有关它支持的数据库脚本类型,请参见http://dev.mysql.com/doc/refman/5.1/en/sql-mode.html

于 2011-08-22T09:21:00.603 回答
6

如果您有与 MSSQL 兼容的 SQL 转储,则可以使用此在线工具将其一一转换为 MySQL 查询

http://burrist.com/mstomy.php

希望它节省了您的时间

于 2014-02-24T16:02:48.583 回答
6

如上所述,如果您的数据中包含制表符、逗号或换行符,那么使用 CSV 导出和导入它将会非常困难。值将溢出字段,您将收到错误。如果您的任何长字段包含带有换行符的多行文本,则此问题会更加严重。

在这些情况下,我的方法是使用 BCP 命令行实用程序从 SQL Server 导出数据,然后在 MySQL 中使用 LOAD DATA INFILE .. INTO TABLE 命令重新读取数据文件。BCP 是最古老的 SQL Server 之一命令行实用程序(可以追溯到 SQL Server 的诞生 - v6.5)但它仍然存在并且仍然是获取数据的最简单和最可靠的方法之一。

要使用此技术,您需要在 MySQL 中创建具有相同或等效架构的每个目标表。我通过右键单击 SQL 企业管理器中的数据库,然后单击 Tasks->Generate Scripts... 并为所有表创建一个 SQL 脚本来做到这一点。然后,您必须手动将脚本转换为与 MySQL 兼容的 SQL(绝对是工作中最糟糕的部分),最后在 MySQL 数据库上运行 CREATE TABLE 命令,这样您就可以按列、空并准备好与 SQL 服务器版本匹配的表数据。

然后,从 MS-SQL 端导出数据,如下所示。

bcp DatabaseName..TableName out TableName.dat -q -c -T -S ServerName -r \0 -t !\t!

(如果您使用的是 SQL Server Express,请使用 -S 值,如下所示:-S "ComputerName\SQLExpress")

这将创建一个名为 TableName.dat 的文件,其字段由 ![tab]! 分隔!和由 \0 NUL 字符分隔的行。

现在将 .dat 文件复制到 MySQL 服务器上的 /tmp 并在 MySQL 端加载,如下所示:

LOAD DATA INFILE '/tmp/TableName.dat' INTO TABLE TableName FIELDS TERMINATED BY '!\t!' LINES TERMINATED BY '\0';

不要忘记表(本例中为 TableName)必须已经在 MySQL 端创建。

在转换 SQL 模式时,此过程非常手动,但它甚至适用于最困难的数据,并且因为它使用平面文件,您永远不需要说服 SQL Server 与 MySQL 对话,反之亦然。

于 2014-02-04T08:06:11.740 回答
4

您可以使用Data Loader工具轻松完成此操作。在使用这个工具之前我已经这样做了,发现它很好。

于 2012-07-06T11:26:35.477 回答
2

看起来您是对的:迁移工具包将与 MySQL Workbench 集成 - 但我认为这还没有完成。请参阅 MySQL GUI 工具(包括迁移工具包)的生命周期结束公告:

http://www.mysql.com/support/eol-notice.html

MySQL 维护 MySQL GUI 工具包的存档:

http://dev.mysql.com/downloads/gui-tools/5.0.html

于 2010-10-18T04:45:13.583 回答
2

我在 MySQL Migration Tool Kit 的 Advanced 选项卡上使用以下连接字符串连接到 SQL Server 2008 实例:

jdbc:jtds:sqlserver://"sql_server_ip_address":1433/<db_name>;Instance=<sqlserver_instanceName>;user=sa;password=PASSWORD;namedPipe=true;charset=utf-8;domain= 

通常参数有“systemName\instanceName”。但在上面,不要添加“systemName\”(仅使用InstanceName)。

要检查 instanceName 应该是什么,请转到 services.msc 并检查 MSSQL 实例的 DisplayName。它显示类似于 MSSQL$instanceName。

希望这有助于从 mysql 迁移工具包进行 MSSQL 连接。

于 2011-08-24T14:48:40.647 回答
1

我有一些必须从 mssql 到 mysql 的数据,很难找到解决方案。所以我最后做了什么(有点冗长的方法,但作为最后的手段它有效)是:

  • 在sql server management studio express中打开mssql数据库(我用的是2005)
  • 依次打开每张桌子
  • 单击左上角的框以选择整个表格:

  • 将数据复制到剪贴板 (ctrl + v)

  • 打开 ms excel
  • 从剪贴板粘贴数据
  • 将 Excel 文件另存为 .csv
  • 对每个表重复上述操作
  • 您现在应该能够将数据导入 mysql

希望这可以帮助

于 2013-02-20T19:24:00.763 回答
1

MySQL 迁移工具包 (1.1.10) 仍可从此处下载:

http://downloads.mysql.com/archives.php?p=MySQLDeveloperSuite&v=1.1.10

于 2012-05-15T14:32:04.357 回答
0

官方网站 ( http://dev.mysql.com/downloads/gui-tools/5.0.html ) 上不再提供下载,请查看此处:http: //download.softagency.net/MySQL/Downloads /MySQLGUI工具/

于 2012-07-06T10:04:33.833 回答