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.