0 votes

Aide à l'amélioration d'un programme de migration

Nous avons plus de 200 vues dans Oracle qui doivent être transférées vers plus de 200 fichiers plats avec des champs de longueur fixe.

J'espère trouver des idées pour améliorer la conception de la routine de migration suivante.

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

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

Actuellement, nous utilisons ODT (Oracle Developer Tools) pour .Net avec c#.

La routine de mappage 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 rédigé le
10ème fonction privée OneRow()
et 10ème fonction privée BuildFormat() (une pour chaque vue d'Oracle, le code sent mauvais).
Et je sais que cela peut être fait mieux et plus rapidement, ce qui permettrait de faciliter la mise en place de nouvelles vues et de gérer les changements plus facilement.

Toute suggestion est la bienvenue.
Merci.

2voto

Adam Hawkes Points 4632

Si les longueurs fixes des colonnes dans la table correspondent aux longueurs dans le fichier, vous pouvez alors interroger de manière générique le fichier user_tab_columns pour voir les tailles des colonnes. Vous pourriez ensuite construire votre format automatiquement à partir des métadonnées de la base de données.

1voto

David Aldridge Points 27624

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X