2008-10-30 20 views
1

J'effectue actuellement une opération de migration à partir d'une base de données existante. Je dois effectuer la migration de millions de lignes d'origine, en séparant le contenu original en plusieurs lignes parent/enfant de destination.Traduction en bloc du contenu de la table

Comme ce n'est pas une simple migration 1 à 1 et que les lignes résultantes sont des lignes parents/enfants basées sur des clés générées par l'identité, quel est le meilleur mécanisme pour effectuer la migration?

Je suppose que je ne peux pas utiliser l'insertion en bloc car les valeurs d'identité pour les lignes enfant ne peuvent pas être déterminées au moment de générer le contenu du script? La seule solution à laquelle je puisse actuellement penser est de définir explicitement l'identité et d'avoir un point de départ prédéterminé pour l'importation.

Si quelqu'un d'autre a des commentaires, j'apprécierais les commentaires.

Répondre

0

Merci pour la suggestion mais je préfère produire une solution programmatique. J'utilise actuellement Nant/CruiseControl pour automatiser les tests et j'ai besoin de quelque chose que je puisse recréer à la volée en fonction du contenu actuel en direct.

1

Ceci est mon approche standard:

  • créer votre nouveau modèle de données
  • extraire les données dans le nouveau DB inchangé
  • écriture (et exécuter) un script SQL pour effectuer la migration
  • Test
  • (en option) supprimer les tables avec les données existantes

Vous pouvez obtenir un long chemin vers la migration des données avec SQL simple. Pour le cas que vous avez décrit, vous n'avez peut-être pas besoin de traiter avec un seul curseur pour le faire passer.

En exécutant le processus dans l'Analyseur de requêtes (ou un analogue dans vos dbms), vous aurez l'avantage de pouvoir tout emballer dans une Transaction afin de pouvoir revenir en arrière si quelque chose devient farfelu en cours de route. Écrivez-le en petits morceaux et testez-le en morceaux, sur votre base de données de développement. Une fois que tout fonctionne correctement, définissez le script sur votre base de données de production.

Trié.