如何将SQL Server数据库导出到MySQL?

我试图从SQL Server数据库备份文件( .bak )转换到MySQL。 这个问题和答案是非常有用的,我已经成功地导入数据库,但现在我坚持出口到MySQL。

build议使用MySQL Migration Toolkit ,但似乎已被MySQL Workbench取代。 是否可以使用MySQL Workbench从迁移工具的相同方式从SQL Server迁移?

还是Migration Toolkit仍然可用?

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

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

  • 数据库迁移 – 支持从Microsoft SQL Server,Sybase ASE和PostgreSQL进行迁移。
  • 迁移项目pipe理 – 允许configuration,复制,编辑,执行和排定迁移。

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

我使用sqlyog从mssql迁移到mysql。 我尝试了Migration toolkit和workbench,但是却喜欢使用sqlyog作为SJA 。 我可以安排导入过程,并可以使用WHERE子句进行增量导入。

在这里输入图像描述

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

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

要使用这种技术,您需要在MySQL中使用相同或等效的模式创build每个目标表。 我通过右键单击SQL企业pipe理器中的数据库,然后单击任务 – >生成脚本…并为所有表创build一个SQL脚本。 然后,您必须手动将脚本转换为与MySQL兼容的SQL(绝对是最糟糕的部分),最后在MySQL数据库上运行CREATE TABLE命令,以便将SQL Server版本与SQL Server版本进行匹配,清空并准备好数据。

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

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

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

这将创build一个名为TableName.dat的文件,字段由![制表符]分隔! 和由\ 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端创build。

当转换SQL模式时,这个过程是痛苦的手工操作,但是它适用于最困难的数据,因为它使用平面文件,您永远不需要说服SQL Server与MySQL交谈,反之亦然。

PhpMyAdmin有一个导入向导,可以让你导入一个MSSQL文件types。

请参阅http://dev.mysql.com/doc/refman/5.1/en/sql-mode.html了解它支持的数据库脚本的types。;

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

如果你有一个MSSQL兼容的SQL转储,你可以使用这个在线工具逐个转换成MySQL查询

http://burrist.com/mstomy.php

希望它节省了你的时间

它看起来像你正确的:迁移工具包将被整合到MySQL工作台 – 但我认为这还没有完成。 查看MySQL GUI工具(包括迁移工具包)的报废声明:

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

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

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

我在MySQL迁移工具包的高级选项卡上使用下面的连接string来连接到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实例的显示名称。 它显示类似于MSSQL $ instanceName。

希望从MySQL迁移工具包的MSSQL连接的帮助。

MySQL迁移工具包(1.1.10)仍然可以从这里下载:

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

下载不在官方网站上( http://dev.mysql.com/downloads/gui-tools/5.0.html ),而不是在这里看看: http : //download.softagency.net/MySQL/Downloads / MySQLGUITools /

我有一些数据,我必须从Mssql到MySQL,难以find解决scheme。 所以我最后做了什么(有点漫长的做法,但作为最后的手段)是:

  • 在sql server management studio express中打开mssql数据库(我用过2005)
  • 依次打开每张桌子
  • 点击左上angular的框select整个表格:

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

  • 打开ms excel
  • 从剪贴板粘贴数据
  • 将excel文件保存为.csv
  • 对每个表重复上述操作
  • 你现在应该可以将数据导入到mysql中

希望这可以帮助