Maison  >  Article  >  base de données  >  Comment migrer MySQL vers KingbaseESV8R2

Comment migrer MySQL vers KingbaseESV8R2

WBOY
WBOYavant
2023-05-31 14:54:371678parcourir

    1. Utilisez le transfert Oracle

    KingbaseESV8R2 ne prend en charge que la migration depuis Oracle, alors migrez d'abord MySQL vers Oracle.

    Problèmes lors de la migration vers Oracle :
    1. Oracle a une limite maximale de 30 chiffres pour les noms de table
    2. Numéro hexadécimal non valide, hexadécimal non valide
    3. Les données de la table sont vides et le rapport ne peut pas insérer NULL dans
    . 4. Le nom de l'index est trop long

    Il y a de nombreux problèmes lors de la migration de MySQL vers Oracle, et l'ajustement est très important et gênant ; lorsque Oracle migre vers Kingbase, parfois la migration de la table ne réussit pas, mais elle peut réussir après plusieurs tentatives.

    2. Utilisez KingbaseESV8R3 pour le transfert

    Après avoir contacté le personnel technique de Jincang, nous avons appris qu'il existe actuellement une nouvelle version V8R3, mais qu'elle ne peut pas être utilisée dans l'environnement de production, mais peut être utilisée pour les tests et prend en charge la migration directe de MySQL vers V8R3.

    Par conséquent, vous devez réinstaller une machine virtuelle. Pendant le processus d'installation, vous ne pouvez pas installer R2 et R3 en même temps et utiliser l'outil de migration R3 pour la migration des données. Veuillez sélectionner Sélectionner tout lors de la migration de la base de données source pour migrer les paramètres tels que les vues, les index, les clés étrangères et les valeurs par défaut.

    Comment migrer MySQL vers KingbaseESV8R2

    Problèmes de migration vers V8R3 :
    1.tinyint(1) est mappé en booléen après la migration, même s'il a été mappé dans l'outil de migration, c'est toujours le même.
    Ainsi, après la migration, vous devez changer le type de champ de la table, et s'il existe une valeur par défaut, vous devez également modifier la valeur par défaut

    Comment migrer MySQL vers KingbaseESV8R2

    Bien que les commentaires aient été sélectionnés lors du processus de migration, les commentaires des champs restent ne peut pas être affiché à l’aide du gestionnaire d’objets par défaut. Passez la souris sur le nom de la table pour afficher les commentaires sur la table. Pas moyen de le voir pour l'instant.

    Après avoir modifié le problème tinyint(1), vous pouvez sélectionner la base de données dans le gestionnaire d'objets de R3 pour une sauvegarde logique.
    Utilisez ensuite le gestionnaire d'objets de R2 pour effectuer une restauration logique.

    3. Autres questions

    1. Auto-incrémentation

    L'auto-incrémentation MySQL est différente de l'auto-incrémentation Kingbase ;

    Si nous utilisons actuellement kingbaseV8R3 pour le transfert, la migration de mysql vers r3 nous aidera à créer la séquence et à remplir les valeurs par défaut des champs pour réaliser l'auto-incrémentation.

    Voici comment utiliser manuellement l'incrémentation automatique :

    Créez d'abord une SÉQUENCE et nommez-la test_id_SEQ Ici, définissez la valeur de départ sur 101

    CREATE SEQUENCE test_id_SEQ START 101;

    Puis ajoutez

    NEXTVAL('test_id_SEQ'::REGCLASS)

    à la valeur par défaut du champ qui nécessite l'auto-incrémentation. -increment puis utilisez l'instruction insert. L'ID de champ de la table de test commence à augmenter à partir de 101

    INSERT INTO test (name) values('1');

    Avant de supprimer la séquence, vous devez supprimer la valeur par défaut dans le champ pour supprimer la séquence

    DROP SEQUENCE test_id_SEQ

    2.uuid

    kingbase n'a pas de fonction uuid, et une erreur est signalée lors de l'exécution

    select replace(uuid(), '-', '') as id from dual

    Pour le moment, utilisez plutôt

    select SYS_GUID_NAME() as id from dual;

    Après tout, les règles de génération uuid de mysql et kingbase sont différentes

    4.

    1. Impossible d'utiliser `mot-clé distinctif

    2. La fonction IFNULL change en NVL

    3.group par Tous les champs doivent être affichés dans

    4.sql ne peut pas apparaître !='', aucune erreur ne sera signalée, mais le résultat de l'exécution est nul. Dans Kingbase, les chaînes vides et null sont équivalentes !='' ,不会报错,但是执行结果null,在Kingbase中空字符串和null等价

    5.函数IF改成NVL2,Kingbase中只能判断是否为null

    6.字段类型字符串但是存时间,又想格式化时间。需要先将时间转为时间戳,再格式化为字符串

    SELECT to_char(to_timestamp('2020-02-20 15:35:44', 'YYYY-MM-DD HH24:MI:SS'),'MM-DD')

    7.不能使用双引号"",用单引号''代替

    8.不能使用count('')

    9.时间格式化,加减

    limit_time = limit_time + (now() - apply_time)

    MySQL:

    limit_time = date_add( limit_time, INTERVAL ( SELECT TimeStampDiff( DAY, now(), apply_time ) ) + 1 DAY )

    Kingbase:麻烦在于时间和字符串的转换,先将时间戳格式化为字符串,再转回时间才能进行加减

    limit_time = limit_time + (to_date(to_char(now(),'YYYY-MM-DD'),'YYYY-MM-DD') - to_date(to_char(apply_time,'YYYY-MM-DD'),'YYYY-MM-DD') + integer '1')

    10.表名和系统视图可能重名,要加模式名.表名

    5 Fonction SI Changée en NVL2, Kingbase ne peut déterminer que si elle est nulle

    6 Le type de champ est une chaîne mais. l'heure est stockée et je souhaite formater l'heure. Vous devez d'abord convertir l'heure en horodatage, puis la formater en chaîne🎜rrreee🎜7. Les guillemets doubles "" ne peuvent pas être utilisés, utilisez des guillemets simples ''. à la place🎜🎜8 .Impossible d'utiliser count('')🎜🎜9. Formatage de l'heure, addition et soustraction🎜🎜limit_time = limit_time + (now() - apply_time)🎜🎜MySQL : 🎜rrreee🎜Kingbase : Le problème est la conversion de l'heure et de la chaîne, formatez d'abord l'horodatage en chaîne, puis reconvertissez l'heure pour ajouter et soustraire 🎜rrreee🎜10 Le nom de la table et la vue système peuvent avoir le même nom, alors ajoutez . nom du schéma.nom de la tableDistinguer 🎜🎜11. is_delete = false remplacé par is_delete = 0, la valeur du champ est 0 et ne peut pas être filtrée avec false 🎜

    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!

    Déclaration:
    Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer