복붙노트

[SPRING] 스프링 배치의 FlatfileItemReader에있는 파일에서 인용 된 CSV의 줄 바꿈 읽기

SPRING

스프링 배치의 FlatfileItemReader에있는 파일에서 인용 된 CSV의 줄 바꿈 읽기

FlatFileItemReader와 CSV 파일을 구문 분석하려고합니다. 이 CSV에는 아래에 표시된 것과 같이 일부 인용 줄 바꿈 문자가 포함되어 있습니다.

email, name
abc@z.com, "NEW NAME
 ABC"

그러나이 구문 분석은 필수 필드가 2인데 실패했지만 실제 값은 1입니다.

FlatFileReader 구성에서 누락 된 부분은 무엇입니까?

<property name="lineMapper">
            <bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper">

                <!-- The lineTokenizer divides individual lines up into units of work -->
                <property name="lineTokenizer">
                    <bean
                        class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">

                        <!-- Names of the CSV columns -->
                        <property name="names"
                            value="email,name" />
                    </bean>
                </property>

                <!-- The fieldSetMapper maps a line in the file to a Product object -->
                <property name="fieldSetMapper">
                    <bean
                        class="com.abc.testme.batchjobs.util.CustomerFieldSetMapper" />
                </property>
            </bean>
        </property>

해결법

  1. ==============================

    1.SimpleFileItemReader는 사용 후 즉시 Simple RecordSeparatorPolicy를 사용합니다.

    SimpleFileItemReader는 사용 후 즉시 Simple RecordSeparatorPolicy를 사용합니다.

    DefaultRecordSeparatorPolicy를 설정해야합니다.

    자사의 javadoc에서 인용 :

    예제 XML 구성

    <bean id="reader" 
          class="org.springframework.batch.item.file.FlatFileItemReader">
          ...
        <property name="recordSeparatorPolicy">
            <bean class="org.springframework.batch.item.file.separator.DefaultRecordSeparatorPolicy" />
        </property>
          ...
    </bean>
    
  2. from https://stackoverflow.com/questions/29509074/reading-line-breaks-in-csv-which-are-quoted-in-the-file-in-flatfileitemreader-of by cc-by-sa and MIT license