[RESOLU] Outil graphique et reverse engineering sur 2 bases de donnée

Eléphant du PHP | 90 Messages

22 sept. 2014, 15:36

Bonjour,

Contexte
J'ai 2 versions installées d'un CMS (vTiger en l'occurrence mais c'est sans importance), une TRÈS ancienne (en production avec une BDD alimentée) et la nouvelle (dernière version avec une BDD vide). Entre ces 2 versions, il y a eu plusieurs versions intermédiaires, du coup la structure des tables a pas mal évolué et il n'est pas possible de faire une récupération standard comme proposé dans le CMS.
Les 2 versions sont installées sur 2 serveurs différents et chaque version possède sa propre BDD MySQL.

Objectif
L'idée est de mettre en production la dernière version après avoir récupéré les données de la version ancienne.

Voici mon problème
Je vais devoir faire un tas de requêtes sql pour alimenter la nouvelle BDD, avec des jointures et tout le tralala. Comme je ne suis pas une super bête en sql et que je vais sûrement faire un tas d'erreurs lors de l'écriture des requêtes et passer des heures à tester/corriger. Du coup, je cherche un outil proposant une interface graphique qui pourrait à partir d'un schéma de mes 2 bases, générer les requêtes SQL d'insertion.

En résumé, je recherche un outil graphique susceptible de :
- faire du reverse engineering à partir de mes 2 BDD (MySQL) soit à partir du dump que j'ai fait, soit à partir d'une connexion aux serveurs pour obtenir une modélisation graphique de mes bases (je ne suis pas certaine que ce soit le bon terme, mais c'est l'idée)
- à partir des modèles graphiques générés, que je puisse graphiquement définir les requêtes, notamment d'insertion, avec les jointures qui vont bien
- générer les scripts sql à partir des requêtes pour que je puisse les balancer sur le serveur.

Pourriez-vous svp me dire si cet outil magique existe ?

J'ai vu que 2 produits semblent bien placés : MySQL Workbench et DBDesigner, mais je n'arrive pas à cerner s'ils répondent à tous mes besoins, notamment le travail sur 2 bases et les requêtes d'insertion...
Quel est votre retour d'expérience ? Peut-être même un autre outil que ceux-là ou une combinaison de plusieurs ?

Merci de vos réponses

Mammouth du PHP | 19672 Messages

07 oct. 2014, 10:32

Salut,
le seul outil que je connaisse qui serait (à priori) parfaitement adapté pour une migration de ce genre, ce serait Talend Open Studio, mais pour ma part, j'ai trouvé son utilisation particulièrement compliquée tellement il y a d'options. Mais pour une migration de ce type, c'est l'outil approprié et il a été créé pour ça (entre autres choses)
Ceci dit, si on considère que c'est pour une migration entre deux versions d'un même outil, ça devrait peut-être poser moins de difficultés, à condition toutefois de correctement maitriser les deux modèles de données pour correctement identifier quelle donnée doit être transférée de telle colonne de table de l'ancienne base vers quelle colonne de quelle table de la nouvelle, le tout sans perdre la cohérence des données.

Le reverse ingeneering ne fera pas tout : ça permettra bien entendu de décrire chaque base, mais ça ne fera pas obligatoirement le lien entre les tables//colonnes des deux versions.
À titre d'information également, il existe DbForge Studio qui inclut un outil de comparaison et de synchronisation entre deux bases. Je n'ai pas exploré à fond cette partie, mais ça fait le même genre de choses que MysqlWorkBench ou DbDesigner, à la différence près que ces deux derniers sont généralement limités à la modélisation et pas conçus pour de la manipulation de données.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 151 Messages

07 oct. 2014, 10:45

Dans notre cas, et confrontés à cette situation, on a généré un dump formaté au nouveau modèle pour passer de mysql à oracle.
Les outils précités sont effectivement intéressants mais hyper complexe...
Ton modèle de migration à l'air complexe, mais si le fonctionnement global implique un schéma global de fonctionnement, alors c'est possible de procéder ainsi... Mais complexe (grande expérience rigolote ceci dit !)
Développeur d'applications pour intranets industriels (IHM), DBA Oracle, auto entrepreneur. Je fuis les frameworks car je pense comme Rasmus Lerdorf : "all PHP frameworks suck"...
Je me suis lancé dans la reprise du projet PhpMyNewsletter (GNU GPL), que je vous invite à essayer.

echo ($user=='enregistré?"je t'aide":"je t'aide pas !");

Eléphant du PHP | 90 Messages

07 oct. 2014, 13:16

Bonjour et merci pour vos réponses,
Pour l'instant, j'ai utilisé MysqlWorkBench. Malheureusement toute la doc que j'ai trouvée est en anglais et je suis une burne en anglais, alors pas simple...
On trouve des tuto en français pour la partie création d'un modèle de données. ça a l'air assez convivial, mais pour ce qui est du reverse ingeneering ou alors je n'ai pas su trouver...
En tâtonnant, j'ai néanmoins pu "charger" mes 2 dumps et créer 2 "schémas" (sans visu graphique) mais ça m'a permis de lancer une "comparaison des bases" ce qui est déjà pas mal. ça génère un rapport textuel avec un comparatif super complet : liste des nouvelles tables/tables existantes, tables modifiées avec les champs ajoutés, supprimés ou format différent, rien n'est oublié et surtout on est sûr que c'est fiable, alors qu'à la mano, on risque toujours d'oublier quelque chose.
En tout les cas, la partie création de modèle de données a l'air simple et conviviale.
Voila pour mon retour d'expérience, ce n'est pas grand chose car je n'utilise qu'une toute petite partie de l'outil, mais ça m'a tout de même bien servi.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

17 oct. 2014, 11:17

salut,

si tu estime ton sujet résolus, peux tu cliquer sur le bouton vers a droite du titre stp ;)


merci

@+
Il en faut peu pour être heureux ......