-
Problème de migration
Salut à tous,
J'ai un problème de migration d'une base access vers Oracle9i.
Alors la migration en elle même aucun ptroblème je peux migrer toutes mes tables sans aucun problème.
Le truc c'est que j'ai optimisé le schéma de la base:
on a ainsi enlevé certains champs de certaines tables ou au contraire en avoir rajoutés d'autres, même les index consititués d'un numéro auto ont changé puisque dans le schéma oracle je veux qu'elles soient préfixés du code "old" pour les identifier comme appartenant à l'ancienne version de l'application.
Bien sûr je peux faire les modifications à la main une fois les données exportées dans Oracle mais vous vous en doutez ça va constituer du très gros boulot: recopier tout le contenu d'un champ, modifier tous les index etc..,c'est tout modifier à la main :aie:
Bref est-ce que quelqu'un à une méthode ou des outils qui pourraient me faciliter la tâche en automatisant certaines opérations?
-
Tu créés un Schema Oracle nommé AS_IS qui est la réplication exacte de ton architecture de ta base Access et tu copies ta base Access dedans sans aucune transformation.
Ensuite tu créés des scripts PL/SQL ou simplement SQL qui font la bascule/transformation de tes données. Comme ça tu peux faire la bascule 100 fois par jours, tout ce que tu auras à faire c'est :
- do alim schéma AS_IS
- do run alim_with_transform.sql
Un ETL permet d'industrialiser ça, mais ça ne vaut le coup que si c'est régulier (pas pendant une migration par exemple).
-
Mouais c'est déjà un pas en avant pour la méthodologie.
Je crois avoir besoin de faire cette migration deux ou trois fois au maximum, après la base Oracle sera indépendante donc pas vraiment besoin d'ETL.
Ma question concerne maintenant le code PL/SQL:
-j'ai dans access une table "commande": composée d'une clé primaire "idcommande" qui est un numéro auto, avec un champ "client" qui en fait est composé du code client correspondant, puis d'autres champs : date,montants, facture,etc.
-dans mon nouveau schéma Oracle je vais peut être d'abord importer les autres informations :date,montant,etc.... Puis comment je fais pour entrer les codes clients correspondants qu'il me faudra alors chercher dans la table "client", et ensuite renommer les index correspondant avec le préfixe "old" ?
Encore plus prise de tête dans la version access la table "client" n'a pas d'index puisqu'on y utilise à la place un code client qui est en fait une abréviation du nom du client.
Si on crée alors on premier lieu la table "client" version Oracle qui elle sera munie d'un index, comment s'y retrouver pour faire la correspondance "commande-client"???
-
Je te conseille de faire plutôt une grosse requête d'alimentation avec jointure plutôt que de le faire en plusieurs fois.
Tu lis ton ancienne table commande jointe avec la table client et toutes les tables dans lesquelles tu as besoin d'informations, et tu insères les données dont tu as besoin dans ta nouvelle table commande.
Autre conseil : tu peux désactiver toutes les contraintes le temps des manipulations et les réactiver quand tu es sûr que ça marche bien. Ca te permet de faire des manipulations aussi "sales" que tu veux, ce qui comptera c'est le résultat final.
Si tu as besoin d'une clé autoincrement (je crois que non mais bon), tu peux passer par un trigger + sequence.
-
Okay,
Merci pour les conseils j'vais me mettre de suite aux codes pl/sql.
Je crois que ça va me prendre un peu de temps mais ça devrait aller (j'suis pas encore très fort à ce niveau :oops: ).
Si j'ai des pbm j'enverrai d'ôtr post:mrgreen: