Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment migrer la base de données MS SQL exécutée sur une machine distante vers ma base de données MySQL locale exécutée sous Linux, en préservant l'encodage

En utilisant MySQL Workbench, j'ai essayé ces combinaisons, aucune n'a fonctionné :

MS SQL distant> pilote ODBC natif MySQL distant

MS SQL distant> pilote MySQL ODBC DataSource distant

MS SQL distant> pilote MySQL freeTDS ODBC distant (avec ou sans UTF-8)

MS SQL virtuel> pilote ODBC natif MySQL virtuel

MS SQL virtuel> pilote MySQL ODBC DataSource virtuel

MS SQL virtuel> pilote ODBC freeTDS MySQL virtuel (avec ou sans UTF-8)

Dans l'un ou l'autre de ces cas, soit le processus de migration s'est bloqué (Workbench ne répondant pas), soit les caractères n'ont pas été transférés correctement.

La durée totale des essais et erreurs était d'environ 12 heures.

Ici, je partage avec vous une façon dont j'ai pu migrer avec succès l'intégralité de la base de données MS SQL vers mon serveur MySQL local exécuté sur ma machine de développement.

Comme je me connectais à la machine W10 distante via Remote Desktop Connection (RDC) depuis ma machine VirtualBox, j'ai d'abord voulu supprimer cette étape supplémentaire pour faciliter les choses.

  1. si vous ne l'avez pas encore, téléchargez et installez machine Virtual Box gratuite que Microsoft propose et démarrez-le

  2. à partir de cette machine virtuelle, démarrez RDC et avant de vous connecter, ajoutez un disque local sur la machine virtuelle pour qu'il soit disponible sur la machine distante

  3. sur une machine distante, démarrez SQL Server management studio et créez une sauvegarde de la base de données (Clic droit sur la base de données souhaitée, Tâches> Sauvegarder..., enregistrer le fichier de sauvegarde sur le disque)

  4. copiez ce fichier de sauvegarde sur votre lecteur sur la machine virtuelle en accédant à Réseaux et en téléchargeant le fichier sur le lecteur C :sur votre machine virtuelle

  5. installez sur votre machine virtuelle MS SQL server, l'édition Express qui est gratuite, ainsi que SQL Server Management Studio (j'ai téléchargé la version 2014)

  6. créez une nouvelle base de données et sélectionnez Tâches...> Restaurer> Base de données..., sélectionnez le fichier que vous avez chargé sur votre machine virtuelle, sélectionnez Remplacer la base de données existante..

  7. créez une nouvelle connexion pour votre serveur MS SQL (clic droit sur Connexions), sélectionnez la connexion et le mot de passe souhaités, attribuez un rôle d'administrateur système, juste pour faciliter les choses, car il s'agit d'un processus de migration unique

  8. sur votre machine hôte Linux locale, installez le dernier MySQL Workbench, je suppose que la base de données MySQL est déjà en cours d'exécution localement, sinon, installez-la

  9. parce que vous êtes sous Linux, vous aurez besoin d'une étape supplémentaire pour installer le pilote FreeTDS ODBC sur votre système, si cela lien, comment installer le pilote FreeTDS sous Linux disparaît, recherchez l'assistant de migration de base de données / migration Microsoft SQL Server dans le manuel de MySQL Workbench

  10. configurer la machine virtuelle pour qu'elle soit accessible depuis votre système Linux hôte, je l'ai fait en sélectionnant Attaché à :adaptateur ponté et en choisissant wlan0 dans les paramètres de la machine virtuelle

  11. démarrez la machine virtuelle et sélectionnez la plage IP à partir du même réseau que celui utilisé par votre adaptateur

  12. sur votre machine virtuelle, ajoutez une règle de pare-feu pour le serveur MS SQL ou désactivez temporairement le pare-feu

À partir de maintenant, tout se fait sur votre machine Linux locale avec la machine virtuelle en cours d'exécution

  1. démarrez la migration de la base de données de MySQL Workbench, sélectionnez MS SQL comme machine source, saisissez l'adresse IP correcte que vous avez précédemment configurée dans votre machine virtuelle

  2. en tant que base de données cible, utilisez les paramètres et les informations d'identification de votre base de données MySQL locale

  3. à l'étape Options de création de cible, sélectionnez uniquement Créer un fichier de script SQL et sélectionnez Conserver les schémas s'ils existent déjà.

  4. suivez les étapes suivantes jusqu'à ce que vous atteigniez la configuration du transfert de données. Là, sélectionnez Copie en ligne du tableau... mais n'appuyez pas sur Suivant

  5. éditez le script enregistré à l'étape 15. :

supprimer :

CREATE SCHEMA IF NOT EXISTS `Test` ;

ajouter :

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

modifiez toutes les définitions de table de création en ajoutant le jeu de caractères et le classement souhaités à la définition de table :

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. exécutez ce script mis à jour dans votre base de données MySQL

  2. passez à l'étape suivante dans MySQL Workbench et les données devraient être importées correctement

Il se peut que certaines étapes ne soient pas explicitement indiquées, veuillez me le faire savoir dans les commentaires si vous avez besoin de quelques éclaircissements