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.
@Adam Hawkes: Bonne idée. Merci +1 –