Je suis nouveau dans le monde de la migration de données et je cherche des moyens de migrer les données des clients en utilisant OurApp 1.0 vers une nouvelle base de données avec un schéma compatible avec OurApp 2.0. J'ai vu plus de quelques personnes recommander Liquibase pour les tâches de gestion de changement de base de données et de refactoring de base de données, ce qui, à mes oreilles, semble être proche de ce dont nous avons besoin. Cependant, après avoir lu le matériel sur www.liquibase.org, j'ai l'impression que Liquibase est plus à propos de garder le schéma à jour que de convertir beaucoup de données existantes pour qu'elles puissent persister le nouveau schéma. Dites que je voulais diviser une colonne de la table Employee nommée nom en une colonne Prénom et Nom. Liquibase serait en mesure de modifier la table en supprimant la colonne de nom et en ajoutant une colonne prénom et nom de famille. Cependant, j'ai l'impression que Liquibase n'est pas vraiment conçu pour que je puisse brancher du code de conversion qui analyserait le nom des enregistrements existants dans la base de données en un prénom et un nom et les stockerait dans leurs colonnes respectives.Liquibase est-il recommandé pour la migration des données de production d'un ancien schéma de base de données vers un nouveau?
Par exemple, supposons que ma table ressemblait à ceci
id | name | position
*********************************
12 Horace Slughorn Professor
13 Albus Dumbledore Headmaster
Après avoir couru Liquibase la colonne de nom serait remplacé par un prenom et la colonne lastname donc mon schéma de base de données serait correct. Mais je suppose que Liquibase n'est PAS une structure qui me permet de brancher du code qui analyse "Horace Slughorn" dans "Horace" et "Slughorn" et stocke ces valeurs dans les colonnes prénom et nom de cet enregistrement.
id | firstname | lastname | position
*****************************************
12 Horace Slughorn Professor
13 Albus Dumbledore Headmaster
Alors Liquibase garde votre schéma jusqu'à ce jour, mais n'a pas été conçu pour vous aider à convertir vos données existantes afin qu'il corresponde au nouveau qu'il schéma. Est-ce correct?
@Jason - Je serais curieux de savoir quelle route vous êtes descendu. Avez-vous écrit une classe personnalisée pour diviser votre table, ou avez-vous utilisé la fonction SQL personnalisée de Liquibase? Ou avez-vous opté pour une approche complètement différente? –
J'ai fait les deux approches, en fonction du problème particulier. Je recommande d'aller avec l'appel SQL personnalisé si possible. Il est généralement le plus facile à écrire et à lire et sera le plus rapide car il s'exécute dans la base de données. Si vous ne parvenez pas à faire fonctionner un appel SQL ou si vous constatez qu'ils commencent à sembler compliqués, revenez à la classe personnalisée.J'ai également utilisé la classe personnalisée quand j'ai une transformation qui doit être appliquée encore et encore et je voulais stocker le SQL dans un emplacement plutôt que de le dupliquer pour chaque utilisation. –