我们在Oracle中有200多个视图,应该将这些视图转换为200多个具有固定长度字段的平面文件。
希望能够更好地设计以下迁移例程。
迁移程序的原型对于名为VIEWNAME1的视图看起来像这样(对于原型中的其他视图也是如此):
StronglyTypedDataSet views = new StronglyTypedDataSet();
ViewName1TableAdapter tableAdapter = new ViewName1TableAdapter();
tableAdapter.Fill(views.VIEWNAME1 );
mapFromViewToFlatFile(views.VIEWNAME1);
目前,我们正在使用ODT(Oracle开发者工具)for .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中的每个视图都有一个,代码闻起来)
而且我知道可以更好更快地完成这项工作,这样可以更轻松地设置新视图,并更轻松地处理更改。
欢迎提出任何建议 感谢。
答案 0 :(得分:2)
如果表中列的固定长度与文件中的长度匹配,那么您可以通常查询user_tab_columns
以查看列大小。然后,您可以从数据库元数据中自动构建格式。
答案 1 :(得分:1)
我认为,基于Adam在元数据上所说的,我会根据这些视图自动构建视图。通过将所有字段转换为文本(使用日期的显式转换)并将字段连接在一起,并将该单个列转储到文本文件,使每个视图成为一个列。