2015-04-08 6 views
5

Sto tentando di analizzare un file CSV con FlatFileItemReader. Questo CSV contiene alcuni caratteri di nuova riga citati come mostrato di seguito.Le interruzioni di riga di lettura in CSV citate nel file in FlatfileItemReader del batch di primavera

email, name 
[email protected], "NEW NAME 
ABC" 

Ma questa analisi è in mancanza di campi richiesti sono 2 ma reale è 1.

Quello che mi manca nella mia configurazione 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> 
+0

[email, nome ..., "ha citato ..."] porterebbe a 3 valori, se io uso [email, "nome, qualcosa"] funziona come previsto, perché il virgolettato dice semplicemente "ignora un delimitatore linie tra virgolette", cosa ti aspetti? –

+0

@MichaelPralow Voglio analizzare il file CSV sopra mostrato. –

+0

Rimossa la configurazione inutilizzata –

risposta

10

fuori dalla scatola del FlatFileItemReader utilizza un SimpleRecordSeparatorPolicy, per il caso d'uso

  • commentato parte va oltre il 2 o più righe

è necessario impostare il DefaultRecordSeparatorPolicy

Citato dal suo javadoc:

Un RecordSeparatorPolicy che tratta tutte le linee come desinenze di record, come finché non hanno le citazioni non terminate, e non finiscono in un marcatore continuazione.

esempio XML di configurazione

<bean id="reader" 
     class="org.springframework.batch.item.file.FlatFileItemReader"> 
     ... 
    <property name="recordSeparatorPolicy"> 
     <bean class="org.springframework.batch.item.file.separator.DefaultRecordSeparatorPolicy" /> 
    </property> 
     ... 
</bean> 
+0

Grazie mille. Ho letto su RecordSeparatorPolicy ma devo aver perso questa parte di virgolette non terminate –

Problemi correlati