Migration MySQL vers Oracle avec Oracle SQL Developer
Par PlaceOweb le samedi, mai 1 2010, 12:05 - SQL - Lien permanent
Comment migrer vos bases de données MySQL à destination d'un serveur Oracle Database ?
Prérequis
- A télécharger :
- SQL Developer 3.x
- Testé avec : Oracle SQL Developer 3.0.02
- MySQL Connector/J, l'officiel driver JDBC pour MySQL.
- Testé avec : Connector/J 5.1.14
- SQL Developer 3.x
- Déjà installé (et configuré) :
- Votre base donnée MySQL (contenant les données à migrer)
- Votre base Oracle (comme destination)
Ajouter Connecteur JDBC MySQL dans SQL Developer
Télécharger le dernier MySQL Connector/J et ajouter la déclaration de ce connecteur (.jar) dans la configuration :
Oracle SQL Developer -> Outils -> Préférences -> Base de données -> Pilotes JDBC tiers
Migration d'une base MySQL vers une base de données Oracle
En sortie d'exportation
C:__sql_migration_mysql2oracle\généré
- Migration jdbc 5.14.2011-01-12_13-14-35.out (contenant le log des erreurs)
- Migration jdbc 5.14.2011-01-12_13-14-35.sql (contenant les requêtes SQL de migration)
Notes
Pas de gestion de la valeur par défaut '' (string vide)
Remplacé par du NULL...
Pas d'auto incrément, remplacé en séquences
-- Sous Mysql : matable.id est un champs PRIMARY AUTO_INCREMENT -- En Oracle il est converti en une séquence et un trigger : -- La séquence CREATE SEQUENCE matable_id_SEQ MINVALUE 1 MAXVALUE 999999999999999999999999 INCREMENT BY 1 NOCYCLE ; -- Le triger sur la table pour appeler la séquence auto incrémentée CREATE OR REPLACE TRIGGER matable_id_TRG BEFORE INSERT OR UPDATE ON matable FOR EACH ROW DECLARE v_newVal NUMBER(12) := 0; v_incval NUMBER(12) := 0; BEGIN IF INSERTING AND :new.id IS NULL THEN SELECT matable_id_SEQ.NEXTVAL INTO v_newVal FROM DUAL; -- If this is the first time this table have been inserted into (sequence == 1) IF v_newVal = 1 THEN --get the max indentity value from the table SELECT NVL(max(id),0) INTO v_newVal FROM matable; v_newVal := v_newVal + 1; --set the sequence to that value LOOP EXIT WHEN v_incval>=v_newVal; SELECT matable_id_SEQ.NEXTVAL INTO v_incval FROM dual; END LOOP; END IF; --used to emulate LAST_INSERT_ID() --mysql_utilities.identity := v_newVal; -- assign the value from the sequence to emulate the identity column :new.id := v_newVal; END IF; END; /
Que pouvons nous migrer avec SQL Developer ?
A voir les extensions chargées dans le "A propos de" Oracle SQL Developer 3.0.02, je dirais que SQL Developer permet les migrations suivantes :
- Migrer DB2 vers Oracle avec SQL Developer
- Migrer Microsoft Access vers Oracle avec SQL Developer
- Migrer Microsoft SQL Server vers Oracle avec SQL Developer
- Migrer MySQL vers Oracle avec SQL Developer
- Migrer Sybase vers Oracle avec SQL Developer
Nom Identificateur Version Statut Oracle SQL Developer - Migrations Antlr3 Translator oracle.sqldeveloper.migration.translation.core_antlr3 Oracle SQL Developer - Migrations Application Migration oracle.sqldeveloper.migration.application Oracle SQL Developer - Migrations Core oracle.sqldeveloper.migration Oracle SQL Developer - Migrations DB2 oracle.sqldeveloper.migration.db2 Oracle SQL Developer - Migrations DB2 Translator oracle.sqldeveloper.migration.translation.db2 Oracle SQL Developer - Migrations Microsoft Access oracle.sqldeveloper.migration.msaccess Oracle SQL Developer - Migrations Microsoft SQL Server oracle.sqldeveloper.migration.sqlserver Oracle SQL Developer - Migrations MySQL oracle.sqldeveloper.migration.mysql Oracle SQL Developer - Migrations Sybase Adaptive Server oracle.sqldeveloper.migration.sybase Oracle SQL Developer - Migrations T-SQL Translator oracle.sqldeveloper.migration.translation.core Oracle SQL Developer - Migrations Teradata oracle.sqldeveloper.migration.teradata Oracle SQL Developer - Migrations Translation UI oracle.sqldeveloper.migration.translation.gui
Ressources
- Migrating a MySQL table using Oracle SQL Developer 1.5
- An Introduction to Oracle SQL Developer – Part IV
- Data Migration is used when you want to migrate your data from a non-Oracle database (MySQL, MS SQL Server, MS Access and Sybase are a few examples) to an Oracle database.
- Data Copy is used when you want to create an exact copy of your database on the same server.
- Data Export will create an in depth Data Definition Language (DDL) document that you can save somewhere other than your database server.