Heim  >  Artikel  >  Datenbank  >  So migrieren Sie MySQL nach KingbaseESV8R2

So migrieren Sie MySQL nach KingbaseESV8R2

WBOY
WBOYnach vorne
2023-05-31 14:54:371678Durchsuche

    1. Oracle-Übertragung verwenden

    KingbaseESV8R2 unterstützt nur die Migration von Oracle, also migrieren Sie zuerst MySQL nach Oracle.

    Probleme bei der Migration zu Oracle:
    1. Oracle hat eine maximale 30-stellige Beschränkung für Tabellennamen
    2. Ungültige Hexadezimalzahl, ungültige Hexadezimalzahl
    3. Die Tabellendaten sind leer und der Bericht kann nicht NULL in
    einfügen 4. Der Indexname ist zu lang

    Bei der Migration von MySQL zu Oracle gibt es viele Probleme. Bei der Migration von Oracle zu Kingbase ist die Anpassung sehr umfangreich und mühsam. Manchmal ist die Tabellenmigration nicht erfolgreich, kann aber später erfolgreich sein mehrere Versuche.

    2. Verwenden Sie KingbaseESV8R3 für die Übertragung

    Nachdem wir das technische Personal von Jincang kontaktiert haben, haben wir erfahren, dass es derzeit eine neue Version V8R3 gibt, die jedoch nicht in der Produktionsumgebung verwendet werden kann, sondern zum Testen verwendet werden kann und die direkte Migration von MySQL unterstützt V8R3.

    Daher müssen Sie während des Installationsvorgangs R2 und R3 nicht gleichzeitig installieren und das R3-Migrationstool für die Datenmigration verwenden. Bitte wählen Sie „Alle auswählen“ aus, wenn Sie die Quelldatenbank migrieren, um Einstellungen wie Ansichten, Indizes, Fremdschlüssel und Standardwerte zu migrieren.

    "So

    Probleme bei der Migration auf V8R3:
    1.tinyint(1) wird nach der Migration dem booleschen Wert zugeordnet, obwohl es im Migrationstool zugeordnet wurde, ist es immer noch dasselbe.
    Nach der Migration müssen Sie also den Tabellenfeldtyp ändern, und wenn es einen Standardwert gibt, müssen Sie auch den Standardwert ändern

    "So

    Obwohl Kommentare während des Migrationsprozesses ausgewählt wurden, bleiben die Kommentare der Felder bestehen kann nicht mit dem Standardobjektmanager angezeigt werden. Bewegen Sie die Maus über den Tabellennamen, um die Kommentare zur Tabelle anzuzeigen. Es gibt noch keine Möglichkeit, es anzuzeigen.

    Nachdem Sie das tinyint(1)-Problem geändert haben, können Sie die Datenbank im Objektmanager von R3 für die logische Sicherung auswählen.
    Verwenden Sie dann den Objektmanager von R2, um eine logische Wiederherstellung durchzuführen.

    3. Andere Fragen

    1. Die automatische Inkrementierung von MySQL unterscheidet sich von der automatischen Inkrementierung von Kingbase. Beide werden durch die Definition einer Sequenz implementiert.

    Wenn wir derzeit KingbaseV8R3 für die Übertragung verwenden, hilft uns die Migration von MySQL auf R3 dabei, die Sequenz zu erstellen und die Standardwerte der Felder auszufüllen, um eine automatische Inkrementierung zu erreichen.

    So verwenden Sie die automatische Inkrementierung manuell:

    Erstellen Sie zunächst eine SEQUENCE und nennen Sie sie test_id_SEQ. Legen Sie hier den Startwert auf 101 fest -inkrementieren und dann die Einfügeanweisung verwenden. Die Feld-ID der Testtabelle beginnt sich ab 101 zu erhöhen

    Kingbase hat keine UUID-Funktion und während der Ausführung wird ein Fehler gemeldet

    1. `distinguish keyword

    2. Funktion IFNULL ändert sich zu NVL

    3.group by Alle Felder müssen in

    4.sql angezeigt werden !='', Es wird kein Fehler gemeldet, aber das Ausführungsergebnis ist null. In Kingbase sind leere Zeichenfolgen und null gleichwertig Die Uhrzeit ist gespeichert und ich möchte die Uhrzeit formatieren. Sie müssen die Zeit zuerst in einen Zeitstempel umwandeln und ihn dann in eine Zeichenfolge formatieren

    CREATE SEQUENCE test_id_SEQ START 101;

    7. Doppelte Anführungszeichen " können nicht verwendet werden, verwenden Sie einfache Anführungszeichen '' Stattdessen

    8 .Kann nicht verwendet werden count('')

    9. Zeitformatierung, Addition und Subtraktion

    limit_time = limit_time + (now() - apply_time)

    MySQL:

    NEXTVAL('test_id_SEQ'::REGCLASS)

    Kingbase : Das Problem ist die Zeit. Um den Zeitstempel in eine Zeichenfolge umzuwandeln, formatieren Sie zunächst den Zeitstempel in eine Zeichenfolge und konvertieren Sie dann die Zeit zurück, um

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

    10 zu addieren oder zu subtrahieren. Der Tabellenname und die Systemansicht haben möglicherweise denselben Namen add schema name.table nameDistinguish

    11 wird in is_delete = 0 geändert, der Feldwert ist 0 und kann nicht mit false gefiltert werden

    Das obige ist der detaillierte Inhalt vonSo migrieren Sie MySQL nach KingbaseESV8R2. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen