문제

기본적으로,나는 평 파일로 데이터베이스입니다.평면 파일에 첫 번째 두 문자는 각 라인에는 유형의 기록입니다.

나는 클래스를 만들에 대한 각각의 레코드 형식과 특성과 일치하는 분야에 기록이 있는가?어야 나는 단지 배열을 사용하여?

내가 원하는 데이터를 로드하의 일종으로 데이터 구조를 저장하기 전에 데이터베이스에서도 사용할 수 있는 장치를 테스트하는지 확인하는 데이터가 올바르게 로드되었습니다.

의 예제는 다음과 같습니다 내가 무슨과 함께 작업(BAI2 은행 문):

01,121000358,CLIENT,050312,0213,1,80,1,2/

02,CLIENT-STANDARD,BOFAGB22,1,050311,2359,,/

03,600812345678,GBP,fab1,111319005,,V,050314,0000/

88,fab2,113781251,,V,050315,0000,fab3,113781251,,V,050316,0000/

88,fab4,113781251,,V,050317,0000,fab5,113781251,,V,050318,0000/

88,010,0,,,015,0,,,045,0,,,100,302982205,,,400,302982205,,/

16,169,57626223,V,050311,0000,102 0101857345,/

88,LLOYDS TSB BANK PL 779300 99129797

88,TRF/REF 6008ABS12300015439

88,102 0101857345 K BANK GIRO CREDIT

88,/IVD-11 MAR

49,1778372829,90/

98,1778372839,1,91/

99,1778372839,1,92
도움이 되었습니까?

해결책

다음과 같이 수업 (또는 구조 또는 언어 지원을 유형하는 가치를 입력하는 것이 좋습니다)을 만드는 것이 좋습니다.

record.ClientReference

보다 훨씬 더 설명 적입니다

record[0]

그리고 당신이 (Wonderfor!)를 사용하고 있다면 파일 헬퍼 라이브러리, 당신의 용어는 당신을 위해 거의 지시됩니다.

다른 팁

검증 로직은 일반적으로 최소 2 레벨을 가지며, 총 수준은 "잘 형성"되고 더 미세한 레벨은 "올바른 데이터"입니다.

여기에는 몇 가지 별도의 문제가 있습니다. 한 가지 문제는 단순히 데이터를 확인하거나 구문 분석이 정확한지 확인하기 위해 테스트를 작성하는 것입니다. 이를 수행하는 간단한 방법은 주어진 값 범위를 수락하는 클래스로 구문 분석하고 예를 들어 적절한 오류를 던지는 것입니다.

public void setfield1 (int i) {if (i> 100) 새로운 InvalidDataException 던지기 ...}

각 레코드 유형에 대해 다른 클래스를 만드는 것은 구문 분석 논리가 코드에 대해 크게 다르기 때문에 원하는 것이므로 조건부 로직이 없습니다.

   public void setField2(String s)
   {
         if (field1==88 && s.equals ...

         else if (field2==22 && s 
   }

이케.

때 있었을 로드하는 이런 종류의 데이터 과거에,내가 그것으로 모든 작업 테이블과 함께 첫 번째에있는 두 개의 문자가 한 분야에,나머지는 다른.그때 나는 그것을 밖으로 구문 분석하는 적절한 다른 작업을 기반으로 테이블에 처음 두 문자입니다.그때 나는 어떤 정리하고 검증하기 전에 삽입하는 데이터에서 두 번째 작품으로 테이블 데이터베이스입니다.

SQL Server 하여 이 작업을 수행할 수 있습니다 DTS(2000)또는 SSIS 패키지를 사용하여 SSIS,할 수 있습니다 프로세스는 데이터임으로 비행장에서 작업 테이블 첫째,하지만 prcess 입과 유사한 구조로 사용하는 첫 번째 두 개의 문자를 결정하는 데이터 흐름 지점을 사용하여,다음의 나머지 부분을 분석하고 기록으로는 일부의 유형을 들고 메커니즘은 다음을 청소 및 유효성 검사에 삽입하기 전에.나는 확실히 다른 데이터베이스도 몇 가지 유형의 메커니즘에 대한 데이터를 가져오는 것이 사귀고 전세계 과정입니다.

데이터 형식이 어떤 종류의 복잡성이 있으면 데이터를 구문 분석하고 데이터를 보유하고 검증을 수행하며 다른 적절한 모델 작업을 수행 할 수있는 사용자 정의 클래스 세트를 작성해야한다는 데 동의합니다 (예 : 일부는 인간 읽기 가능한 설명을 반환합니다. 이것이 별도의보기 클래스에 넣는 것이 더 낫다고 주장합니다). 이것은 아마도 상속을 사용하는 좋은 상황 일 것입니다. 여기서 부모 클래스 (아마도 추상)가있는 모든 유형의 기록에 공통적 인 속성과 방법을 정의하고 각 어린이 수업은 이러한 방법을 무시하여 필요한 경우 자체 구문 분석 및 검증을 제공 할 수 있습니다. 또는 자체 속성과 방법을 추가하십시오.

각 유형의 행에 클래스를 만드는 것은 배열을 사용하는 것보다 더 나은 솔루션입니다.

그러나 과거에는 해시 타이블의 배열 목록을 사용하여 같은 것을 달성했습니다. Arraylist의 각 항목은 행이며 Hashtable의 각 항목은 열 이름과 셀 값을 나타내는 키/값 쌍입니다.

데이터를 보유 할 데이터베이스를 설계하여 시작하지 않겠습니까? 엔티티 프램 워크를 사용하여 클래스를 생성 할 수 있습니다.

다음은 엉뚱한 아이디어입니다.

Perl에서 일하고 있다면 사용할 수 있습니다. DBD :: CSV 플랫 파일의 데이터를 읽으려면 분리기 및 EOL 문자에 대한 올바른 값을 제공했습니다. 그런 다음 SQL 문을 통해 플랫 파일에서 행을 읽습니다. DBI는 귀하를위한 표준 PERL 데이터 구조로 만들고 원하는 유효성 검사 로직을 실행할 수 있습니다. 각 행이 모든 유효성 검사 테스트를 통과하면 dbd :: alling을 사용하여 대상 데이터베이스에 쓸 수 있습니다.

-스티브

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top