Помогите улучшить программу миграции - PullRequest
0 голосов
/ 02 декабря 2009

У нас более 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, код пахнет).
И я знаю, что это можно сделать лучше и быстрее, что упростит настройку новых представлений и облегчит обработку изменений.

Любые предложения приветствуются.
Спасибо.

Ответы [ 2 ]

2 голосов
/ 02 декабря 2009

Если фиксированные длины столбцов в таблице совпадают с длинами в файле, то вы можете сделать общий запрос user_tab_columns, чтобы увидеть размеры столбцов. Затем вы можете автоматически создать свой формат из метаданных базы данных.

1 голос
/ 03 декабря 2009

Я думаю, что я автоматизировал бы построение представлений поверх этих представлений, основываясь на том, как Адам говорит о метаданных. Сделайте каждый просмотр одним столбцом, преобразовав все поля в текст (используя явное преобразование для дат) и объединяя поля вместе, и просто сбросьте этот единственный столбец в текстовый файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...