【问题标题】:How to export SQL Server database to MySQL? [duplicate]如何将 SQL Server 数据库导出到 MySQL? [复制]
【发布时间】:2011-04-24 10:38:41
【问题描述】:

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

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

或者迁移工具包在哪里仍然可用?

【问题讨论】:

  • 我有一个MS SQL数据库,我想把里面的数据导入MYSQL来替换原来的系统。我现在找到了旧版本的迁移工具包,但还没有完全连接到 MS SQL Server。
  • 我同意。尽管该主题被标记为重复,但我仍然没有找到任何实质性帮助我从 mssql 转换为 mysql 的东西。 Mssql 到 Mysql 就是这样一个因情况而异的话题。这是对那些将其标记为重复的人的侮辱。多么无知!
  • 希望对您有所帮助:youtube.com/watch?v=9OHXCYRYjRs

标签: mysql sql-server database-migration


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    http://burrist.com/mstomy.php

    希望它能节省您的时间

    【讨论】:

    • 谨慎使用这个,替换中的一些逻辑缺陷。乍一看,我的带有 let go 的表格(例如 Categories)已更改为 Cate;ories。将正则表达式更改为\bgo\b 无效。
    【解决方案3】:

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

    在这些情况下,我的方法是使用 BCP 命令行实用程序从 SQL 服务器导出数据,然后在 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 对话,反之亦然。

    【讨论】:

      【解决方案4】:

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

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

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

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

      【讨论】:

      • 我用它从我的 Mac 上的 SQL Server 迁移。还从 Mac 下载了驱动程序 actualtech.com/download.php 和原始 ODBS Adminstrator。
      • @powder366,您能否更具体地了解如何将您的 Mac 连接到 SQL Server?谢谢!
      • 它工作!在无法从 PhpMyAdmin (o'rly ?) 导入后,并尝试了 AWS 的架构转换工具,该工具拒绝在我的 Win7 和 Win10 PC 上安装而没有给出任何错误消息,我终于得到了一个工作工具!因为我无法在 Workbench 中创建到 SQL-Server DB 的“连接”,所以我认为我缺少一个有效的 ODBC 驱动程序。但是我错了。看起来 Workbench 中唯一可以连接到所述 SQL-Server 的地方是迁移对话框。因此,我使用 HeidiSQL 在 Workbench 之外测试我的连接。感谢 @Nolwennig 的视频(有问题的 cmets)
      • @Javier Cadiz,是否可以像 SQL 一样迁移存储过程和触发器?
      • 是和否,如果你有很多数据,例如,能够导出小型数据库。 bigint PK 出错;在这种情况下,迁移向导中的重试按钮被窃听;
      【解决方案5】:

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

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

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

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

      希望对你有帮助

      【讨论】:

      • 查看其他答案,看来您可以使用 MySQL Workbench 进行迁移。你为什么要手动做这个? (您的方法只适用于几张桌子,但如果您有很多桌子,那将是一项永无止境的工作。)
      • 真的,那是你做的吗?????
      • 这不是迁移,哈哈。这是一个数据复制粘贴。迁移的作用远不止于此,如果您有 50 个表,您会为所有表都迁移吗?
      • 爱你,伙计... +1,因为你有帮助他人的精神,无论你知道什么。有些人可能不知道 MySQL Workbench,你的方法是万无一失的,只是它不会导入数据结构。
      【解决方案6】:

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

      【讨论】:

      【解决方案7】:

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

      【讨论】:

      • 看来这只是 Windows。
      【解决方案8】:

      【讨论】:

        【解决方案9】:

        MySQL Migration Toolkit (1.1.10) 仍可从此处下载:

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

        【讨论】:

          【解决方案10】:

          我使用 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 连接。

          【讨论】:

            【解决方案11】:

            看来您是对的:迁移工具包将与 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

            【讨论】:

            猜你喜欢
            • 2012-05-27
            • 2017-12-06
            • 2012-12-13
            • 1970-01-01
            • 2015-04-22
            • 2012-09-16
            • 2013-06-08
            • 1970-01-01
            • 2012-04-22
            相关资源
            最近更新 更多