2017-05-04 13 views
0

私は春バッチで新しく、cvsファイルの例を実装しましたが、colmunsはコンマで区切られています しかし、xlxsファイルには挿入するセパレータなしのcolmunsファイルがあります私のxlxsファイル内のセパレータを使わずにデータだけの列。バッチバッチxlxsファイルをMySqlデータベース

ここ

は、ジョブ・レポートの内容

<bean id="report" class="com.mkyong.model.Report" scope="prototype" /> 
<batch:job id="reportJob"> 
<batch:step id="step1"> 
    <batch:tasklet> 
    <batch:chunk reader="cvsFileItemReader" writer="mysqlItemWriter" 
     commit-interval="2"> 
    </batch:chunk> 
    </batch:tasklet> 
</batch:step> 

<bean id="cvsFileItemReader" class="org.springframework.batch.item.file.FlatFileItemReader"> 

<!-- Read a csv file --> 
<property name="resource" value="classpath:cvs/report.csv" /> 

<property name="lineMapper"> 
    <bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper"> 
     <!-- split it --> 
     <property name="lineTokenizer"> 
      <bean 
      class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer"> 
      <property name="names" value="date,impressions,clicks,earning" /> 
     </bean> 
     </property> 
     <property name="fieldSetMapper"> 
      <!-- return back to reader, rather than a mapped object. --> 
      <!-- 
     <bean class="org.springframework.batch.item.file.mapping.PassThroughFieldSetMapper" /> 
       --> 
      <!-- map to an object --> 
      <bean 
      class="org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper"> 
      <property name="prototypeBeanName" value="report" /> 
      </bean> 
     </property> 

     </bean> 
    </property> 

    </bean> 
<bean id="mysqlItemWriter" 
class="org.springframework.batch.item.database.JdbcBatchItemWriter"> 
<property name="dataSource" ref="dataSource" /> 
<property name="sql"> 
    <value> 
     <![CDATA[ 
      insert into RAW_REPORT(DATE,IMPRESSIONS,CLICKS,EARNING) 
     values (:date, :impressions, :clicks, :earning) 
     ]]> 
    </value> 
</property> 
<!-- It will take care matching between object property and sql name parameter --> 
<property name="itemSqlParameterSourceProvider"> 
    <bean 
    class="org.springframework.batch.item.database.BeanPropertyItemSqlParameterSourceProvider" /> 
</property> 

私は私のコードを実行するときにこのエラーが

org.springframework.batch.item.file.FlatFileParseException: Parsing error at line: 1 in resource=[class path resource [cvs/report.csv]], input=[123456;139,237;37;123456] 

PS表示されている:私のファイルでの各列にはvセパレーターなしで表示されます。

答えて

1

Excelで作成された.XLSまたは.XLSXファイルからバッチジョブの入力データを読み取る場合は、Excel用のItemReader実装を含むSpringバッチ拡張を使用する必要があります。ソースからjarをビルドする必要があります。ここのリンクです:https://github.com/spring-projects/spring-batch-extensions

は、以下のようにそれを使用します。

<bean id="excelReader" class="org.springframework.batch.item.excel.poi.PoiItemReader"> 
    <property name="resource" value="/path/to/your/excel/file" /> 
    <property name="rowMapper"> 
     <bean class="org.springframework.batch.item.excel.mapping.BeanWrapperowMapper"> 
      <property name="targetType" value="com.your.package.Model" /> 
     <bean> 
    </property> 
</bean> 

参考:https://github.com/spring-projects/spring-batch-extensions/tree/master/spring-batch-excel

+0

私は完全に私はこの例を見て理解していなかったが、私はこれで春のバッチが表示されませんあなたがもっと説明できるならば。 最初のリンクから –

+0

いただきありがとうございます。春のバッチ拡張のためにライブラリジャーを作成するよう指示されます。このjarをプロジェクトの依存関係ライブラリに追加します。その後、指定した設定を使用してPoiItemReaderを使用してxlsxファイルを読み込むことができます。 – mhshimul

関連する問題