Résumé de la migration du serveur SQL vers Mysql

Processus de migration

Transformation de programme et migration de base de données

Type de migration

Migration en ligne et migration hors ligne

Outil de migration

Vous pouvez utiliser SQL Server Management Studio, qui ajoute un pilote ODBC pour faire fonctionner Mysql.

Utilisation de SQL OPENQUERY

 

OPENQUERY, exécutez à distance l'ajout, la suppression, la modification et la requête de base de données.

par exemple:

  1. OPENQUERY ([MYSQL-STAGE-STAGE], 'select * from etl_migrate_log where table_name =' 'notes' ';')

     Le premier paramètre est le nom du serveur lié configuré et le deuxième paramètre est la commande MySQL à exécuter

Ajouter, supprimer, modifier

--1.SELECT 语句
SELECT * FROM OPENQUERY ([MYSQL-STAGE-STAGE], 'select * from etl_migrate_log where table_name =' 'notes' ';');
- 或
SELECT * FROM OPENQUERY ([MYSQL-STAGE-STAGE], 'select * from etl_migrate_log') WHERE nom_table = 'notes'
 
--2.INSERT 语句 , INTO 可 省略
INSERT INTO OPENQUERY ([MYSQL-STAGE-STAGE] , 'select table_name, endtime from etl_migrate_log;') VALUES ('notes', now ())
 
--3.UPDATE 语句
UPDATE OPENQUERY ([MYSQL-STAGE-STAGE], 'select table_name, endtime from etl_migrate_log where table_name =' ' notes '' ') SET endtime = now ()
 
--4.DELETE 语句 , FROM 可 省略
DELETE FROM OPENQUERY ([MYSQL-STAGE-STAGE],' select * from etl_migrate_log where table_name = '' notes '' '


DELETE FROM OPENQUERY ([MYSQL-STAGE-STAGE], 'select * from etl_migrate_log') WHERE nom_table = @tablename

Différence de structure et de syntaxe

  1. , Type de données horodatage

    Sqlserver et mysql ont tous deux un type de données horodatage, mais leur implémentation est assez différente.

    Dans SQL Server, ce type indique l'ordre relatif de modification des données dans la base de données. Sa valeur est essentiellement un nombre croissant de type bigint, indépendant de l'heure et de la date, et le nombre ne sera pas relu au niveau de l'instance de base de données.

    Dans mysql, ce type indique l'ordre relatif dans lequel la modification des données se produit dans la base de données. Son essence est un temps, qui peut être répété au niveau de la table.

    Le plus gros écueil est que ce type de champ est le domaine clé de notre activité, utilisé par les utilisateurs pour extraire des données du serveur.

    La solution finale est de migrer les données de ce champ du serveur sql vers mysql en fonction de la valeur de bigint, mysql ajoute un type de données timastamp et le programme ajoute un mécanisme de jugement.

    2. Jeu de caractères et expressions emoji

    Par défaut, les expressions emoji peuvent être enregistrées directement dans sqlserver. Le processus de migration n'a pas remarqué le problème. Le problème a été découvert après la migration des données historiques.

    Besoin d'utiliser utf8mb4 pour enregistrer ces données dans mysql.

    3. L'index ne peut pas dépasser la taille

    La longueur de l'index dans mysql ne peut pas dépasser 767 octets! ! !

    Il ne peut s'agir que d'un type de données optimisé.

    Par exemple, certains champs sauvegardent le macid de l'appareil, le type de données est varchar (50), après enquête, on constate que macid n'a que 12 bits, qui peuvent être modifiés en varchar (12).

    Et si int peut être changé en tinyint ou smallint, latin1 peut-il être utilisé à la place de utf8 (bien sûr, il est préférable d'utiliser utf8 de manière uniforme), etc.

    Voici principalement l'optimisation des types de données, et il y aura un article spécial pour introduire l'optimisation des types de données plus tard.

    4. Type de Varchar (max)

    MySQL n'a pas ce type de données et le type de texte est requis dans MySQL.

    5. Syntaxe incompatible commune

    L'un des sqlserver utilise top pour récupérer les premières lignes de données, et mysql utilise limit pour compléter cette fonction. Ceci est relativement facile à modifier.

    Les deux méthodes d'utilisation des tables temporaires sont différentes.

    6, récursivité CTE

    Dans les opérations où il existe une requête récursive, sqlserver a une fonctionnalité intéressante qui est la requête récursive CTE.

    7, sur la requête de fenêtre

    La fonction over window dans sqlserver est également une fonctionnalité que j'aime beaucoup, comme le tri de regroupement, la plage de regroupement et d'autres requêtes.

Je suppose que tu aimes

Origine blog.csdn.net/cheerlh2018/article/details/106686026
conseillé
Classement