首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将SQL Server数据库导出到MySQL?

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

Stack Overflow用户
提问于 2010-10-13 00:50:58
回答 9查看 309.4K关注 0票数 91

我正在尝试从SQL Server数据库备份文件(.bak)转换为MySQL。This question和answers非常有用,我已经成功地导入了数据库,但现在却卡在导出到MySQL上。

建议使用MySQL迁移工具包,但似乎已被MySQL工作台取代。是否可以像迁移工具一样使用MySQL工作台从SQL Server进行迁移?

或者,迁移工具包仍然可以在某个地方使用?

EN

回答 9

Stack Overflow用户

发布于 2012-08-03 17:22:07

我使用sqlyog从mssql迁移到mysql。我尝试过Migration toolkit and workbench,但因为它的SJA而喜欢sqlyog。我可以安排导入过程,并且可以使用WHERE子句进行增量导入。

票数 24
EN

Stack Overflow用户

发布于 2011-08-22 17:21:01

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

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

票数 7
EN

Stack Overflow用户

发布于 2014-02-04 16:06:12

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

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

要使用这种技术,您需要在MySQL中使用相同或等效的模式创建每个目标表。为此,我在SQL企业管理器中右键单击数据库,然后单击任务->生成脚本...并为所有表创建一个SQL脚本。然后,您必须手动将脚本转换为MySQL兼容的SQL (这肯定是作业中最糟糕的部分),最后在MySQL数据库上运行CREATE TABLE命令,这样您就拥有了与SQL server版本相匹配的表-按列、为空并准备好了数据。

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

代码语言:javascript
复制
bcp DatabaseName..TableName out TableName.dat -q -c -T -S ServerName -r \0 -t !\t!

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

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

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

代码语言:javascript
复制
LOAD DATA INFILE '/tmp/TableName.dat' INTO TABLE TableName FIELDS TERMINATED BY '!\t!' LINES TERMINATED BY '\0';

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

当涉及到转换SQL schema时,这个过程是非常痛苦的手动操作,但是它甚至适用于最困难的数据,而且因为它使用平面文件,所以您永远不需要说服SQL Server与MySQL进行对话,反之亦然。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3917081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档