"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Guide de migration de MySQL vers GBase

Guide de migration de MySQL vers GBase

Publié le 2024-08-17
Parcourir:440

MySQL to GBase Migration Guide

Cet article fournit un guide rapide pour la migration des systèmes d'application basés sur des bases de données MySQL vers des bases de données GBase (GBase 8c). Pour des informations détaillées sur des aspects spécifiques des deux bases de données, les lecteurs peuvent se référer à la documentation officielle de MySQL (https://dev.mysql.com/doc/) et au manuel d'utilisation de GBase 8c. En raison du contenu étendu impliqué dans le mappage de base des types de données MySQL et d'autres aspects du processus de migration, cela ne sera pas abordé en détail dans cet article. Si vous êtes intéressé, veuillez laisser un commentaire et nous pourrons en discuter la prochaine fois.

1. Création d'une base de données

Dans MySQL et GBase 8c, l'instruction CREATE DATABASE est utilisée pour créer une base de données. Les différences de syntaxe spécifiques sont les suivantes :

Opération Instruction MySQL SQL Instruction SQL GBase 8c
CRÉER UNE BASE DE DONNÉES Exemple de CRÉATION D'UNE BASE DE DONNÉES CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; Exemple de CRÉATION D'UNE BASE DE DONNÉES OWNER gbase ENCODING 'UTF8' LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8';

Considérations relatives à la migration des instructions SQL pour la création de bases de données :

(1) Dans MySQL et GBase 8c, vous pouvez spécifier le jeu de caractères et les règles de classement lors de la création d'une base de données.

Contrairement à MySQL, dans GBase 8c, le mot-clé ENCODING est utilisé pour spécifier le jeu de caractères, et les mots-clés LC_COLLATE et LC_CTYPE sont utilisés pour spécifier les règles de classement :

  • LC_COLLATE : ce paramètre affecte l'ordre de tri des chaînes (par exemple, lors de l'utilisation de ORDER BY, ainsi que l'ordre des index sur les colonnes de texte).

  • LC_CTYPE : ce paramètre affecte la classification des caractères, tels que les majuscules, les minuscules et les chiffres.

(2) Lors de la création d'une base de données dans GBase 8c, vous pouvez également spécifier des attributs supplémentaires uniques. Les attributs courants incluent :

  • OWNER : Ce paramètre spécifie le propriétaire de la base de données. S'il n'est pas spécifié, le propriétaire est par défaut l'utilisateur actuel.

  • LIMITATION DE CONNEXION : ce paramètre spécifie le nombre de connexions simultanées que la base de données peut accepter. Les administrateurs système ne sont pas soumis à cette limite.

(3) Structure de la base de données

Dans MySQL, base de données et schéma sont synonymes et les bases de données peuvent se référencer mutuellement. Dans GBase 8c, la base de données et le schéma sont des objets distincts. Une seule base de données peut contenir plusieurs schémas, et les bases de données ne peuvent pas se référencer les unes les autres, mais les schémas au sein de la même base de données le peuvent.

2. Utilisation de la base de données

Comparaison de différentes instructions SQL pour le fonctionnement de la base de données :

Opération Instruction MySQL SQL Instruction SQL GBase 8c Outil gsql GBase 8c
Afficher les bases de données AFFICHER LES BASES DE DONNÉES ; ou AFFICHER LA BASE DE DONNÉES, exemple ; SELECT * FROM pg_database; \l ou \l
Changer de base de données UTILISER l'exemple ; Reconnectez-vous au commutateur, cette fonction n'utilise pas SQL pour basculer \c exemple
Supprimer la base de données Exemple de DROP DATABASE ; Exemple de DROP DATABASE ; Aucun

3. Création de tableaux

MySQL et GBase 8c prennent en charge la création de tables à l'aide de l'instruction CREATE TABLE. Les différences de syntaxe spécifiques sont les suivantes :

Opération Instruction MySQL SQL Instruction SQL GBase 8c
Création de tables à l'aide de CREATE TABLE CREATE TABLE `my_table` (
`id` int NON NULL AUTO_INCREMENT COMMENT 'id',
`user_id` int NON NULL COMMENT 'ID utilisateur',
`name` varchar(50) PAR DÉFAUT COMMENTAIRE NULL 'Nom',
`adresse` varchar(50) COMMENTAIRE NULL PAR DÉFAUT 'Adresse',
`mot de passe` varchar(20) COMMENTAIRE PAR DÉFAUT 'passwd' 'Mot de passe',
CLÉ PRIMAIRE (`id `)
) MOTEUR=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE "ma_table" (
"id" SERIAL NOT NULL,
"user_id" int NOT NULL,
"nom" varchar(50),
"adresse" varchar(50) ,
"passwd" varchar(20) DEFAULT 'mot de passe',
CONSTRAINT "my_table_pkey" CLÉ PRIMAIRE ("id")
);

COMMENTAIRE SUR LA COLONNE "my_table"."id " EST 'id';
COMMENTAIRE SUR LA COLONNE "ma_table"."user_id" EST 'ID utilisateur';
COMMENTAIRE SUR LA COLONNE "ma_table"."nom" EST 'Nom';
COMMENTAIRE SUR LA COLONNE " ma_table"."adresse" EST 'Adresse';
COMMENTAIRE SUR LA COLONNE "ma_table"."passwd" EST 'Mot de passe';
Création de tables à l'aide de CREATE TABLE ... LIKE créer la table `my_table_like` comme `my_table`; créer une table my_table_like (comme my_table);
Création de tables à l'aide de CREATE TABLE ... AS créer la table `my_table_as` en sélectionnant * depuis `my_table`; créer la table my_table_as en sélectionnant * from my_table ;

Lors de la migration des instructions SQL pour la création de tables, les modifications de syntaxe suivantes sont requises :

(1) Règles de dénomination et sensibilité à la casse
Dans MySQL, les noms de bases de données, de tables et de champs sont entourés de guillemets (« ») pour le marquage. Ceci n'est pas autorisé dans GBase 8c ; à la place, GBase 8c utilise soit des guillemets doubles, soit aucune marque.

Dans GBase 8c, si les noms de table et de champ ne sont pas placés entre guillemets doubles, ils sont automatiquement convertis en minuscules lors de la création de la table. Si vous devez spécifier des noms en majuscules, vous devez les mettre entre guillemets doubles.

(2) Modifications liées au moteur de stockage

  • Lors de la migration vers GBase 8c, vous devez supprimer les clauses liées au moteur de stockage telles que ENGINE et TYPE des instructions MySQL.

  • GBase 8c ne prend pas en charge la définition de jeux de caractères au niveau de la table, les clauses CHARSET dans les instructions MySQL doivent donc être supprimées lors de la migration vers GBase 8c.

(3) CRÉER UNE TABLE COMME\AS
GBase 8c prend également en charge la syntaxe CREATE TABLE LIKE\AS, mais l'utilisation de la clause LIKE diffère de celle de MySQL. Dans GBase 8c, la clause LIKE doit être entourée de "()", et elle ne copie pas automatiquement les annotations COMMENT des colonnes de la table d'origine.

4. Déclarations liées à la vue

MySQL et GBase 8c prennent en charge les vues et la méthode de création de base est similaire. Cependant, il est important de noter que dans GBase 8c, selon la règle par défaut, la modification directe des données dans une vue n'est pas prise en charge.

Opération Instruction MySQL SQL Instruction SQL GBase 8c
Création d'une vue CREATE VIEW v_my_table AS SELECT * FROM my_table; CREATE VIEW v_my_table AS SELECT * FROM my_table;
Modifier des données via une vue INSERT INTO v_my_table(user_id, nom, adresse) VALUES(2222, 'bbb', 'xxxx'); Supporté, mais nécessite l'ajustement de la RÈGLE par défaut
Supprimer une vue DROP VIEW v_my_table; DROP VIEW v_my_table;

5. Déclarations liées à l'indice

MySQL et GBase 8c prennent en charge la fonctionnalité d'indexation, mais il existe de légères différences dans les opérations de création et de suppression. Les différences de syntaxe de base sont les suivantes :

Opération Instruction MySQL SQL Instruction SQL GBase 8c
Création d'un index CRÉER UN INDEX i_user_id EN UTILISANT BTREE SUR ma_table (user_id);
ou
CRÉER UN INDEX i_user_id SUR ma_table (user_id) EN UTILISANT BTREE ;
CRÉER UN INDEX i_user_id SUR ma_table EN UTILISANT BTREE (user_id);
Suppression de l'index DROP INDEX i_user_id SUR ma_table; DROP INDEX i_user_id;

Points d'attention pour la migration des instructions de création et de suppression d'index :

(1) Position de USING index_type
Dans MySQL, la clause USING index_type peut apparaître avant ou après la clause table_name(col_name), comme indiqué :

... EN UTILISANT index_type table_name(col_name) ...

OU

... nom_table(nom_col) EN UTILISANT type_index ...

Cependant, dans GBase 8c, la clause USING index_type doit être placée au milieu de la clause table_name(col_name) :

... nom_table USING type_index (nom_col) ...

(2) DROP INDEX SUR la table
Dans GBase 8c, lors de la suppression d'un objet d'index, vous n'avez pas besoin de spécifier la clause ON table. Cette clause doit être supprimée lors de la migration.

(3) Autres propriétés
GBase 8c ne prend pas en charge les propriétés FULLTEXT et SPATIAL lors de la création d'objets d'index. Ces propriétés doivent être supprimées lors de la migration.

Déclaration de sortie Cet article est reproduit sur : https://dev.to/congcong/mysql-to-gbase-8c-migration-guide-31ch?1 En cas de violation, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3