2009-12-02 3 views
0

Nous avons plus de 200 vues dans Oracle qui devraient être transférées vers plus de 200 fichiers plats avec des champs de longueur fixe. En espérant trouver des idées pour mieux concevoir la routine de migration suivante.
Aide pour améliorer un programme de migration

Le prototype du programme de migration ressemble à ceci pour la vue nommée VIEWNAME1 (et sont les mêmes pour d'autres vues du prototype):

StronglyTypedDataSet views = new StronglyTypedDataSet(); 
ViewName1TableAdapter tableAdapter = new ViewName1TableAdapter(); 
tableAdapter.Fill(views.VIEWNAME1 ); 
mapFromViewToFlatFile(views.VIEWNAME1); 

Actuellement, nous utilisons ODT (Outils Oracle Developer) pour .Net avec C#.

La routine de cartographie pour chaque vue:

private void mapFromViewToFlatFile(DataTable table) 
{ 
      StringBuilder format = BuildFormat(); 
      StringBuilder outBuf = new StringBuilder(); 
      foreach (views.VIEWNAME1Row row in table.Rows) 
      { 
       OneRow(outBuf, format, row); 
      } 
      SerializeToFile(outBuf, FILENAME); 
} 

private void OneRow(StringBuilder outBuf, StringBuilder format,views.VIEWNAME1Row row) 
{ 
    outBuf.AppendFormat(format.ToString(), 
        row.COLUMNNAME1.Trim(), 
        row.IsCOLUMNNAME2Null() ? string.Empty : row.COLUMNNAME2.Trim() 
    ); 
    OutBuf.AppendLine(); 
} 


private StringBuilder BuildFormat() 
{ 
     StringBuilder format = new StringBuilder(); 
     format.Append("{0,-14}"); 
     format.Append("{1,-36}"); 
     return format; 
} 

Après avoir écrit la fonction fonction
et 10 BuildFormat privé()
10 OneRow privé() (un pour chaque vue dans Oracle, les odeurs de code).
Et je sais que cela peut être fait mieux et plus rapidement, ce qui faciliterait la configuration de nouvelles vues et faciliterait les changements.

Toutes les suggestions sont les bienvenues.
Merci.

Répondre

2

Si les longueurs fixes des colonnes de la table correspondent aux longueurs du fichier, vous pouvez interroger génériquement le user_tab_columns pour voir les tailles des colonnes. Ensuite, vous pouvez construire votre format automatiquement à partir des métadonnées de la base de données.

+0

@Adam Hawkes: Bonne idée. Merci +1 –

1

Je pense que j'automatiserais la construction de vues au-dessus de ces vues, basé comme Adam dit sur les métadonnées. Faites de chaque vue une seule colonne en convertissant tous les champs en texte (en utilisant une conversion explicite pour les dates) et en concaténant les champs ensemble, et en transférant cette seule colonne dans un fichier texte.

+0

@David Aldridge: +1. Merci –

Questions connexes