MultiResourceItemReader
은 폴더에서 여러 개의 파일을로드합니다 (csv
).스프링 배치 작업에서 ItemWriter 대상 파일 이름을 변경하는 방법은 무엇입니까?
각 파일에 대해 ItemWriter
이 생성하는 파일 이름을 변경하고 싶습니다. 그러나 : 어떻게?
전혀 가능합니까? 그렇다면 어떻게하면 ItemWriter
을 사용하여 다른 파일에 데이터를 쓸 수 있습니까?
MultiResourceItemReader
은 폴더에서 여러 개의 파일을로드합니다 (csv
).스프링 배치 작업에서 ItemWriter 대상 파일 이름을 변경하는 방법은 무엇입니까?
각 파일에 대해 ItemWriter
이 생성하는 파일 이름을 변경하고 싶습니다. 그러나 : 어떻게?
전혀 가능합니까? 그렇다면 어떻게하면 ItemWriter
을 사용하여 다른 파일에 데이터를 쓸 수 있습니까?
버퍼링 등의 세부 사항 때문에 FlatFileItemReader
인스턴스의 파일 이름을 변경할 수 없습니다. 그러나 동일한 작업을 수행하는 데 사용할 수있는 두 가지 방법이 있습니다.
ClassifierCompositeItemWriter
ClassifierCompositeItemWriter
사용하여 각각에 대해 하나 FlatFileItemWriter
은 당신이 쓰고 싶은 파일을 만들 것입니다. 그런 다음 입력 항목을 기준으로 리더를 선택하는 Classifier
구현을 만듭니다. ClassifierCompositeItemWriter
은 Classifier
을 사용하여 각 항목에 사용할 작성기를 선택합니다.
현재 문서에서 ClassifierCompositeItemWriter
에 대한 자세한 읽을 수 있습니다 : 다음과 같은 조건이 충족 될 경우에 당신은 같은 일을 처리하기 위해 파티션을 사용할 수, http://docs.spring.io/spring-batch/apidocs/org/springframework/batch/item/support/ClassifierCompositeItemWriter.html
자원에 의해 분할
을 :
MultiResourcePartitioner
유사하다는 Partitioner
, 당신은 MultiResourcePartitioner
으로 (개별적으로 동일한 로직을 각각의 파일을 처리 할 수 구현이 경우 병렬에서 처리 될 수있다 잘). 단계별로 범위가 지정된 리더 및 라이터를 사용하면 입력 소스 및 출력 대상을 동적으로 구성 할 수 있습니다. http://docs.spring.io/spring-batch/reference/html/scalability.html#partitioning
감사를 통찰력 :
현재 분할에 대한 자세한 내용을보실 수 있습니다. 두 가지 모두 유망한 것으로 들리므로 다음 유스 케이스에 사용할 것을 권장합니다. 약 20.000 개의 압축 CSV 파일로 각각 수 mb입니다. 모든 파일을 읽고 변환 (= 데이터를 제거)하고 마지막으로 출력 파일에 기록해야합니다. 그래서 결국 출력 디렉토리에 20.000 개의 csv 파일이 있어야합니다. 처리 순서는 중요하지 않습니다. 전체 프로세스가 하루에 여러 번 실행되어야합니다. 이 상황에 가장 적합한'MultiResourcePartitioner'는 무엇입니까? – membersound
이 유스 케이스에 대해 파티셔닝을 사용할 수 있다면 가능합니다. 아마도 구현하기가 더 쉬우 며 필요한 경우 추가 확장이 가능합니다. –
나는 파티셔를 시도하고 일반적으로 작동합니다. 하지만 : 작성된 파일 이름은 프로세서 내부에서 처음으로 알려진 값 (파일의 첫 번째 줄에서 값)을 포함해야합니다. 어떻게이 값을 'FlatFileItemWriter'에'stepExecutionContext'로 전달하여 그 이름을 고려할 수 있습니까? – membersound