>source

Spring Batch를 사용하여 3 백만 줄의 데이터가있는 파일을 처리합니다. 파일은 다음과 같이 구성됩니다 :

ID1-Adress1-NumberPhone1
ID1-Adress2-NumberPhone2
ID1-Adress3-NumberPhone3
ID2-Adress1-NumberPhone1
ID2-Adress2-NumberPhone2
ID3-Adress1 NumberPhone1
...

ID로 파일을 읽어야합니다. 라인 단위가 아닙니다. 예를 들면 다음과 같습니다.
읽다

ID1-Adress2-NumberPhone2
ID1-Adress3-NumberPhone3
ID2-Adress1-NumberPhone1
ID2-Adress2-NumberPhone2

그런 다음 ID와 속성을 갖는 Person 객체를 만듭니다. Map <String, String>  (주소, 전화 번호), 이 객체를 프로세서에 전달하고 그런 다음 두 번째 ID와 관련된 줄을 읽고 필자에게 줄 Person List 객체가 생길 때까지 계속합니다. 구체적으로 프로세서로 전송되기 전과 기록기가 데이터베이스에 저장하기 전에 각 멀티 라인 객체를 완성하려면 독자가 필요합니다.

내가 수행 한 프로세스는 한 줄씩 읽는 단계를 작성 하고이 줄을 작성자에게 객체로 전달합니다.이 작가에서는 동일한 ID를 가진 객체를 반복하고 다른 객체에 매핑 (쓰기)합니다. 완성 된 객체의이 최종 목록을 가져 와서 데이터베이스에 삽입하는 두 번째 단계입니다. 문제는이 단계가 첫 번째 단계에서 2H보다 많은 시간이 걸린다는 것입니다.

리더기에 방법, 집계 프로세스가 있습니까? 이 예제를 보려고했습니다 https://github.com/spring-projects/spring-batch/tree/master/spring-batch-samples/src/main/java/org/springframework/batch/sample/domain/ 여러 줄이지 만 위에서 언급 한 파일 형식에 맞게 간단한 구체적인 예가 필요하다는 것을 전혀 이해하지 못했습니다

  • 답변 # 1

    여러 줄 샘플을 살펴볼 수 있습니다. 이 예에서 입력 파일의 형식은 다음과 같습니다 (이 경우와 유사 함).

    BEGIN
    INFO,UK21341EAH45,customer1
    AMNT,978,98.34
    END
    BEGIN
    INFO,UK21341EAH46,customer2
    AMNT,112,18.12
    END
    ...
    
    

    사용자 정의 리더는 여러 줄에 걸쳐있는 항목을 집계하는 데 사용됩니다. 이 예에서 (논리) 항목은 BEGIN 로 구분됩니다.  그리고 END  (물리적) 기록. MultilineTradeItemReader를보고 자신의 상황에 맞게 조정할 수 있습니다.

    이것이 도움이되기를 바랍니다.

  • 이전 codeblocks - 씨 - 화면과 텍스트 파일로의 유나이티드 출력
  • 다음 javascript - 확인란 필터를 사용하여 div 만들기/제거