如何将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,复制,编辑,执行和排定迁移。
我使用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工具轻松完成此操作。 在使用这个工具之前,我已经完成了这个工作,并发现它很好。
它看起来像你正确的:迁移工具包将被整合到MySQL工作台 – 但我认为这还没有完成。 查看MySQL GUI工具(包括迁移工具包)的报废声明:
http://www.mysql.com/support/eol-notice.html
MySQL维护MySQL GUI工具包的档案:
我在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中
希望这可以帮助