2009-12-02 3 views
0

오라클에는 고정 길이 필드가있는 200 개 이상의 플랫 파일로 전환해야하는 200 개 이상의 뷰가 있습니다.
마이그레이션 프로그램 개선을위한 도움말

다음 마이그레이션 루틴의 더 나은 디자인을위한 아이디어를 얻기를 바랍니다.

마이그레이션 프로그램의 프로토 타입 (원형에서 다른 뷰에 대해 동일하고 있습니다) VIEWNAME1라는 뷰에 대해 다음과 같습니다

:

StronglyTypedDataSet views = new StronglyTypedDataSet(); 
ViewName1TableAdapter tableAdapter = new ViewName1TableAdapter(); 
tableAdapter.Fill(views.VIEWNAME1 ); 
mapFromViewToFlatFile(views.VIEWNAME1); 

현재 우리는 ODT (오라클 개발자 도구)를 사용하는을위한 닷넷 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() 함수 (하나를 작성 후이 코드는 냄새).
그리고 더 쉽고 빠르게 수행 할 수 있으므로 새로운보기를 쉽게 설정하고 변경 사항을보다 쉽게 ​​처리 할 수 ​​있습니다.

모든 의견을 환영합니다.
감사합니다.

답변

2

테이블의 고정 길이가 파일의 길이와 일치하면 일반적으로 user_tab_columns을 쿼리하여 열 크기를 확인할 수 있습니다. 그런 다음 데이터베이스 메타 데이터에서 형식을 자동으로 작성할 수 있습니다.

+0

@Adam Hawkes : 좋은 생각입니다. 감사합니다 +1 –

1

아담이 메타 데이터에서 말한 것처럼 뷰를 기반으로 뷰를 만드는 것을 자동화한다고 생각합니다. 모든 필드를 텍스트로 변환 (날짜에 대한 명시 적 변환 사용)하고 필드를 연결하여 각 열을 단일 열로 만들고 그 열을 텍스트 파일로 덤프하십시오.

+0

@ David Alldridge : +1. 감사 –

관련 문제