У нас более 200 представлений в Oracle, которые должны быть преобразованы в 200+ плоских файлов с полями фиксированной длины.
Надеемся получить идеи для улучшения дизайна следующей процедуры миграции.
Прототип программы миграции выглядит следующим образом для представления с именем VIEWNAME1 (и таким же для других представлений в прототипе):
StronglyTypedDataSet views = new StronglyTypedDataSet();
ViewName1TableAdapter tableAdapter = new ViewName1TableAdapter();
tableAdapter.Fill(views.VIEWNAME1 );
mapFromViewToFlatFile(views.VIEWNAME1);
В настоящее время мы используем ODT (Oracle Developer Tools) для .Net с c #.
Процедура отображения для каждого представления:
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;
}
После написания
10-я приватная функция OneRow ()
и 10-я частная функция BuildFormat () (по одному на каждое представление в Oracle, код пахнет).
И я знаю, что это можно сделать лучше и быстрее, что упростит настройку новых представлений и облегчит обработку изменений.
Любые предложения приветствуются.
Спасибо.