Migration de Donnees
Presentation
Objectif principal : Un outil pour migrer des donnees entre differentes bases de donnees ou formats. CSV vers SQLite, MySQL vers PostgreSQL, JSON vers base de donnees, etc. Avec transformation des donnees au passage.
Technologies utilisees : Python avec SQLAlchemy pour l'abstraction des bases de donnees, Pandas pour les transformations, et des connecteurs specifiques (mysql-connector, psycopg2).
Fonctionnalites cles : Mapping de schemas configurable, transformation des donnees (renommer colonnes, changer types, filtrer), mode dry-run pour tester, reprise apres erreur.
Livrables attendus : Script de migration configurable via fichier YAML. Logs detailles. Mode validation qui verifie l'integrite apres migration.
Calendrier previsionnel : Deux semaines. SQLAlchemy c'est puissant mais complexe, y'a eu une phase d'apprentissage.
Parties prenantes & criteres de succes : Projet pour un TP de base de donnees. On devait migrer des donnees d'un format a un autre sans perte.
Le Defi
Les types de donnees qui sont pas compatibles entre bases. Un DATETIME MySQL c'est pas pareil qu'un TIMESTAMP PostgreSQL. Et les caracteres speciaux dans les strings qui font planter les insertions. Fallait gerer tous ces cas.
La Solution
J'ai fait une couche de mapping de types qui convertit automatiquement. Genre DATETIME -> timestamp, VARCHAR(n) -> TEXT si trop grand, etc. Pour les caracteres speciaux, j'utilise les requetes parametrees qui echappent tout automatiquement.
Architecture Technique
Module extractors/ avec des classes pour chaque source (CSV, JSON, MySQL, etc.). Module transformers/ pour les transformations de donnees. Module loaders/ pour ecrire dans chaque destination. Un orchestrateur ETL qui chaine les trois. Config en YAML.
Points Cles
- Support multi-sources et destinations
- Mapping de types automatique
- Mode validation post-migration
Apercu
Resultats & Apprentissages
La migration du TP s'est bien passee, toutes les donnees ont ete transferees sans perte. J'ai compris les problemes classiques de migration et comment les eviter. SQLAlchemy c'est vraiment un outil puissant une fois maitrise.
Evolutions Futures
Migration incrementale (que les nouvelles donnees). Support de plus de sources (MongoDB, API REST). Interface graphique pour configurer les mappings visuellement.