【问题标题】:Migrating data from MySQL to SQL Server将数据从 MySQL 迁移到 SQL Server
【发布时间】:2012-05-14 14:19:51
【问题描述】:

我希望将数据从 MySQL 迁移到 SQL Server。我的第一个想法是以 .bak 格式备份数据并转储到 SQL Server 中。那么有没有什么办法可以得到一个.bak格式的MySQL数据库备份文件呢?

另外,有没有更简单、更容易的方法将数据从 MySQL 迁移到 SQL Server?

【问题讨论】:

  • 您始终可以将转储文件扩展名指定为 .bak
  • .bak 是特定于 SQL Server 的专有二进制格式。 MySQL 只能转储到基于文本的文件,这些文件具有用于重建 db/tables/data 的原始 SQL 语句。您可以将该转储文件加载到 sql server 的控制台中,然后将其作为一长串命令运行。

标签: mysql sql-server database-migration


【解决方案1】:

您是否从 MS SQL(标准版或更高版本随附)尝试 SSIS? 我不知道您要传输什么,但表格和视图通过这种方式很容易:

  1. 创建一个新的 MS SQL 数据库(空)
  2. 右键数据库选择任务->导入数据
  3. 作为源,您选择 mySQL 驱动程序(需要先安装 - http://dev.mysql.com/downloads/connector/odbc/
  4. 选择数据库,连接它,然后跟随助手选择视图和表
  5. 在助手结束时,您可以保存 SSIS 包并使用 Visual Studio Business Intelligence 中的 SSIS 项目对其进行编辑(还附带 MS SQL 标准或更高版本),或者您只需运行它。如果您遇到传输/转换问题,您可能需要使用 Studio 版本对其进行编辑并修改包以处理有问题的表/列。

【讨论】:

    【解决方案2】:

    我希望您不必这样做,但作为最后的手段,您可以生成自定义 SQL 数据转储,如下所示;

    SELECT CONCAT_WS( ' '
       , 'INSERT INTO [dbo].[table_name] (col1,col2) VALUES'
       , col1
       , CONCAT( '"', col2, '"' )
       , ';'
    ) AS '-- Inserts'
    FROM table_name
    ORDER BY col1 ASC;
    

    这可以像您喜欢的那样复杂,但我只建议您在将数据导入 SQL Server 时遇到问题,例如:自动数据转换问题。除非您的数据量很大,否则您最好使用mysqldump 并通过例如过滤输出。 sedperl

    【讨论】: