为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

MM们 2019-10-26 11:20:27
我正在尝试从SQL Server数据库备份文件(.bak)转换为MySQL。这个问题和答案非常有用,我已经成功导入了数据库,但是现在只能导出到MySQL。建议使用MySQL Migration Toolkit,但似乎已被MySQL Workbench取代。是否可以使用MySQL Workbench以与迁移工具相同的方式从SQL Server进行迁移?还是在某处仍然可以使用Migration Toolkit?
查看完整描述

3 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

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


查看完整回答
反对 回复 2019-10-26
?
红颜莎娜

TA贡献1842条经验 获得超12个赞

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


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


要使用此技术,您需要在MySQL中使用相同或等效的架构创建每个目标表。通过右键单击SQL企业管理器中的“数据库”,然后单击“任务”->“生成脚本...”,并为所有表创建一个SQL脚本,可以做到这一点。然后,您必须手动将脚本转换为与MySQL兼容的SQL(这绝对是工作中最糟糕的部分),并最终在MySQL数据库上运行CREATE TABLE命令,以便将表与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”)


这将创建一个名为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对话,反之亦然。


查看完整回答
反对 回复 2019-10-26
  • 3 回答
  • 0 关注
  • 1681 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信