如何将在远程计算机上运行的MS SQL数据库迁移到在linux上运行的本地MySQL数据库,保留编码

时间:2016-08-14 12:51:22

标签: mysql sql-server mysql-workbench database-migration

我有一台运行SQL Server的远程Windows 10计算机(v12,Express版),我需要将一个数据库传输到运行MySQL数据库(MariaDB)的计算机。

MS SQL数据库包含特殊字符(捷克语变音符号),如果我尝试在远程计算机上使用MySQL Workbench将数据库迁移到在同一台远程计算机上运行的MySQL,那么它就会搞乱。

如何正确传输数据库?

1 个答案:

答案 0 :(得分:0)

使用MySQL Workbench,我尝试过这些组合,但都没有工作:

远程MS SQL>远程MySQL本机ODBC驱动程序

远程MS SQL>远程MySQL ODBC数据源驱动程序

远程MS SQL>远程MySQL freeTDS ODBC驱动程序(带或不带UTF-8)

虚拟MS SQL>虚拟MySQL本机ODBC驱动程序

虚拟MS SQL>虚拟MySQL ODBC数据源驱动程序

虚拟MS SQL>虚拟MySQL freeTDS ODBC驱动程序(带或不带UTF-8)

在任何一种情况下,迁移过程都会卡住(非响应工作台)或字符未正确传输。

试验和错误的总时间约为12小时。

在这里,我将与您分享如何将整个MS SQL数据库成功迁移到在我的开发机器上运行的本地MySQL服务器。

当我从我的VirtualBox机器通过远程桌面连接(RDC)连接到远程W10机器时,起初我想删除这个额外的步骤以使事情变得更容易。

  1. 如果您还没有,请下载并安装free Virtual Box machine that Microsoft offers并启动它

  2. 从此虚拟机启动RDC并在连接之前,在虚拟机上添加本地磁盘以在远程计算机上可用RDC dialog

  3. 在远程计算机上启动SQL Server管理工作室并创建数据库备份(右键单击所需数据库,任务>备份...,将备份文件保存到磁盘)

  4. 通过导航到网络并将文件上传到虚拟机上的C:驱动器,将此备份文件复制到虚拟机上的驱动器

  5. 在您的虚拟机上安装MS SQL服务器,免费的Express版本以及SQL Server Management Studio(我已下载2014版)

  6. 创建新数据库并选择任务...>恢复>数据库...,选择上传到虚拟机的文件,选择覆盖现有数据库.. select Overwrite the existing database..

  7. 为您的MS SQL服务器创建新登录(右键单击登录),选择所需的登录名和密码,分配一个sysadmin角色,只是为了简化操作,因为这是一次性迁移过程{{3 }}

  8. 在您的本地主机Linux机器上安装最新的MySQL Workbench,我假设MySQL数据库已在本地运行,如果没有,请安装它

  9. 因为您使用的是Linux,您需要额外的步骤才能将FreeTDS ODBC驱动程序安装到您的系统中,如果此assign a sysadmin role失效,请搜索数据库迁移向导/ Microsoft SQL MySQL Workbench手册中的服务器迁移

  10. 设置虚拟机可以从您的主机Linux系统访问,我已经选择了附加到:桥接适配器并在虚拟机的设置中选择wlan0

  11. 启动虚拟机并从适配器使用的同一网络中选择IP范围 link, how to install FreeTDS driver on Linux

  12. 虚拟机上的
  13. 为MS SQL服务器添加firewal规则或暂时关闭防火墙

  14. 从现在开始,一切都在运行虚拟机的本地Linux机器上完成

    1. 启动MySQL Workbench'数据库迁移,选择MS SQL作为源计算机,输入您之前在虚拟机中设置的正确IP地址select IP range from the same network as you adapter uses

    2. 作为目标数据库,使用本地MySQL数据库设置和凭据

    3. 目标创建选项步骤中的
    4. 仅选择创建SQL脚本文件,如果已经退出则选择保留模式。

    5. 执行后续步骤,直至到达数据传输设置。选择表格的在线副本...但不要按下一步

    6. 编辑步骤15中保存的脚本。

    7. 删除:

      CREATE SCHEMA IF NOT EXISTS `Test` ;
      

      添加:

      CREATE DATABASE `Test` DEFAULT CHARACTER SET utf16 COLLATE utf16_czech_ci;
      

      通过向表定义中添加所需的字符集和排序规则来更改所有创建表定义:

      CREATE TABLE IF NOT EXISTS `TestTable` (
        `id` bigint(20) NOT NULL AUTO_INCREMENT,
        `name` varchar(255) COLLATE utf16_czech_ci DEFAULT NULL,
        PRIMARY KEY (`id`)
      ) DEFAULT CHARSET=utf16 COLLATE=utf16_czech_ci;
      
      1. 在MySQL数据库中运行此更新的脚本

      2. 转到MySQL Workbench的下一步,数据应该正确导入

      3. 可能有一些步骤没有明确说明,如果您需要澄清,请在评论中告诉我