Oracleには200以上のビューがあり、固定長フィールドを持つ200以上のフラットファイルに変換する必要があります。
次の移行ルーチンのより良い設計を行うためのアイデアを得ることを望んでいます。
移行プログラムのプロトタイプは、VIEWNAME1という名前のビューでは次のようになります(プロトタイプの他のビューでも同じです)。
StronglyTypedDataSet views = new StronglyTypedDataSet();
ViewName1TableAdapter tableAdapter = new ViewName1TableAdapter();
tableAdapter.Fill(views.VIEWNAME1 );
mapFromViewToFlatFile(views.VIEWNAME1);
現在、C#を使用した.Net用のODT(Oracle Developer Tools)を使用しています。
各ビューのマッピングルーチン:
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のビューごとに1つ、コードの臭い)を記述した後。
そして、これをより良く、より速く行うことができ、新しいビューのセットアップがより簡単になり、変更をより簡単に処理できることを私は知っています。
どんな提案でも大歓迎です。
ありがとう。