Maison > base de données > tutoriel mysql > le corps du texte

Guide de migration de MySQL vers GBase

WBOY
Libérer: 2024-07-17 05:58:08
original
556 Les gens l'ont consulté

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 :

Operation MySQL SQL Statement GBase 8c SQL Statement
CREATE DATABASE CREATE DATABASE example CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE DATABASE example 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 communs incluent :

  • OWNER : Ce paramètre précise 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 SQL MySQL Instruction SQL GBase 8c Outil gsql GBase 8c ête>
Operation MySQL SQL Statement GBase 8c SQL Statement GBase 8c gsql Tool
View Databases SHOW DATABASES; or SHOW DATABASE example; SELECT * FROM pg_database; l or l+
Switch Database USE example; Reconnect to switch, this function does not use SQL to switch c example
Delete Database DROP DATABASE example; DROP DATABASE example; None
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 exemple c 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 :

Operation MySQL SQL Statement GBase 8c SQL Statement
Creating Tables using CREATE TABLE CREATE TABLE `my_table` (
`id` int NOT NULL AUTO_INCREMENT COMMENT 'id',
`user_id` int NOT NULL COMMENT 'User id',
`name` varchar(50) DEFAULT NULL COMMENT 'Name',
`address` varchar(50) DEFAULT NULL COMMENT 'Address',
`password` varchar(20) DEFAULT 'passwd' COMMENT 'Password',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE "my_table" (
"id" SERIAL NOT NULL,
"user_id" int NOT NULL,
"name" varchar(50),
"address" varchar(50),
"passwd" varchar(20) DEFAULT 'password',
CONSTRAINT "my_table_pkey" PRIMARY KEY ("id")
);

COMMENT ON COLUMN "my_table"."id" IS 'id';
COMMENT ON COLUMN "my_table"."user_id" IS 'User id';
COMMENT ON COLUMN "my_table"."name" IS 'Name';
COMMENT ON COLUMN "my_table"."address" IS 'Address';
COMMENT ON COLUMN "my_table"."passwd" IS 'Password';
Creating Tables using CREATE TABLE ... LIKE create table `my_table_like` like `my_table`; create table my_table_like (like my_table);
Creating Tables using CREATE TABLE ... AS create table `my_table_as` as select * from `my_table`; create table my_table_as as select * 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 mis entre guillemets, 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 mettre les noms 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, donc les clauses CHARSET dans les instructions MySQL doivent être supprimées lors de la migration vers GBase 8c.

(3) CRÉER UNE TABLE LIKEAS
GBase 8c prend également en charge la syntaxe CREATE TABLE LIKEAS, mais l'utilisation de la clause LIKE diffère de celle de MySQL. Dans GBase 8c, la clause LIKE doit être placée entre "()", 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 SQL MySQL Instruction SQL GBase 8c ête>
Operation MySQL SQL Statement GBase 8c SQL Statement
Creating a View CREATE VIEW v_my_table AS SELECT * FROM my_table; CREATE VIEW v_my_table AS SELECT * FROM my_table;
Modifying Data Through a View INSERT INTO v_my_table(user_id, name, address) VALUES(2222, 'bbb', 'xxxx'); Supported, but requires adjusting the default RULE
Dropping a View DROP VIEW v_my_table; DROP VIEW v_my_table;
Créer 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 ;
Operation MySQL SQL Statement GBase 8c SQL Statement
Creating Index CREATE INDEX i_user_id USING BTREE ON my_table (user_id);
or
CREATE INDEX i_user_id ON my_table (user_id) USING BTREE;
CREATE INDEX i_user_id ON my_table USING BTREE (user_id);
Dropping Index DROP INDEX i_user_id ON my_table; DROP INDEX i_user_id;
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 SQL MySQL Instruction SQL GBase 8c ête> Création d'un index CRÉER UN INDEX i_user_id EN UTILISANT BTREE SUR ma_table (user_id); ou CREATE INDEX i_user_id ON my_table (user_id) USING 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

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

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

... table_name USING index_type (col_name) ...

(2) DÉPOSER L'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.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!