2017-10-06 164 views
2

該表擁有超過2億條記錄,但我需要限制選定的前500萬條記錄。我已經用jdbcCursorItemReader嘗試了大約2-3個小時來選擇並使用單步處理將其寫入csv文件,所以我選擇使用並行處理,即春季批量提供。
我,通過讓taskExecutor和JdbcPagingItemReader使每個5個單獨的文件百萬個,但問題是我無法在查詢參數中指定限制和偏移量子句。請幫助我。讚賞比這更好的方法。如何在Spring批處理中使用JdbcPagingItemReader中的limit和offset子句?

<bean id="itemReader" class="org.springframework.batch.item.database.JdbcPagingItemReader" scope="step"> 
 
    <property name="dataSource" ref="dataSource" /> 
 
    <property name="rowMapper"> 
 
    <bean class="MyRowMapper" /> 
 
    </property> 
 
    <property name="queryProvider"> 
 
    <bean class="org.springframework.batch.item.database.support.SqlPagingQueryProviderFactoryBean"> 
 
     <property name="dataSource" ref="dataSource" /> 
 
     <property name="sortKeys"> 
 
     <map> 
 
        <entry key="esmeaddr" value="ASCENDING"/> 
 
       </map> 
 
     </property> 
 
     <property name="selectClause" value="elect cust_send,dest,msg,stime,dtime,dn_status,mid,rp,operator,circle,cust_mid,first_attempt,second_attempt,third_attempt,fourth_attempt,fifth_attempt,term_operator,term_circle,bindata,reason,tag1,tag2,tag3,tag4,tag5" 
 
     /> 
 
     <property name="fromClause" value="FROM bill_log " /> 
 
     <property name="whereClause" value="where esmeaddr = '70897600000000' and country='India' and apptype='SMS' Limit 0,1000000" /> 
 
    </bean> 
 
    </property> 
 
    <property name="pageSize" value="1000000" /> 
 
    <property name="parameterValues"> 
 
    <map> 
 
      <entry key="param1" value="#{jobExecutionContext[param1]}" /> 
 
      <entry key="param2" value="#{jobExecutionContext[param2]}" /> 
 
     </map> 
 
    </property> 
 
</bean>

回答

0

,因爲這就是讀者本身都行,你不能使用閱讀器內的SQL LIMIT子句。相反,Spring Batch具有內置於JdbcPagingItemReader中的功能。要設置要處理的項目的最大數量,可以使用JdbcPagingItemReader#setMaxItemCount(5000000)配置閱讀器,如果有偏移量,則可以設置JdbcPagingItemReader#setCurrentItemCount(offset)。也就是說,偏移將在重新啓動時被覆蓋,其值在ExecutionContext中找到。你可以在這裏閱讀更多關於這個javadoc:https://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/item/database/JdbcPagingItemReader.html

+0

非常感謝@MichealMinella。所提供的鏈接幫助了我很多。 – geekyKishan

相關問題