我们在 Oracle 中有 200 多个视图,这些视图应该转换为 200 多个具有固定长度字段的平面文件。
希望得到想法来更好地设计以下迁移例程。
对于名为 VIEWNAME1 的视图,迁移程序的原型如下所示(对于原型中的其他视图也是如此):
StronglyTypedDataSet views = new StronglyTypedDataSet();
ViewName1TableAdapter tableAdapter = new ViewName1TableAdapter();
tableAdapter.Fill(views.VIEWNAME1 );
mapFromViewToFlatFile(views.VIEWNAME1);
目前,我们正在使用带有 c# 的 .Net 的 ODT(Oracle 开发人员工具)。
每个视图的映射例程:
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 中的每个视图一个,代码有味道)之后。
而且我知道这可以做得更好更快,这样可以更轻松地设置新视图,并更轻松地处理更改。
欢迎任何建议。
谢谢。