2016-04-28 4 views
1

zu laden Ich verwende org.springframework.batch.item.database.JdbcBatchItemWriter, um die Dateien in DB zu schreiben und org.springframework.batch.item.file.mapping.PassThroughFieldSetMapper zu verwenden, um die Spalten zuzuordnen. Die Daten wurden nicht in die Datenbank eingefügt und es wurde kein Fehler in den Protokollen angezeigt.Nicht in der Lage, Daten in MySQL DB mit Federbatch

<bean id="ItemWriter" class="org.springframework.batch.item.database.JdbcBatchItemWriter"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="sql"> 
     <value> 
      <![CDATA[ 
       insert into Student_Details(Name,Id,ClassId,Rank) values (:Name, :Id, :ClassId, :Rank) 
      ]]> 
     </value> 
    </property>  
    <property name="itemSqlParameterSourceProvider"> 
     <bean class="org.springframework.batch.item.database.BeanPropertyItemSqlParameterSourceProvider" /> 
    </property> 

2016-04-28 05:45:59,904 INFO [com.sam.test.mine.scheduler.SchedulerService] [fileFirmsChannelPool-2] INFO - <Ok file received: Student_details_20160116.OK> 
Apr 28, 2016 5:45:59 AM org.springframework.batch.core.launch.support.SimpleJobLauncher run 
INFO: Job: [FlowJob: [name=StudentDetailsJob]] launched with the following parameters: [{groupId=0, size=0,filename=file:/app/data/Student_details_20160116.txt, filenames=file:/app/data/Student_details_20160116.txt, now=1461836759909,type=STUDENT_DET}] 
Apr 28, 2016 5:46:00 AM org.springframework.batch.core.job.SimpleStepHandler handleStep 
INFO: Executing step: [cleanStudentDetails] 
2016-04-28 05:46:00,362 INFO [com.sam.test.mine.batch.JdbcUpdateTasklet] [fileFirmsChannelPool-2] INFO - <Deleted table Student_Details successfully.> 
Apr 28, 2016 5:46:00 AM org.springframework.batch.core.job.SimpleStepHandler handleStep 
INFO: Executing step: [studentDetailsStep] 
Apr 28, 2016 5:46:00 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions 
INFO: Loading XML bean definitions from class path resource [org/springframework/jdbc/support/sql-error-codes.xml] 
Apr 28, 2016 5:46:00 AM org.springframework.jdbc.support.SQLErrorCodesFactory <init> 
INFO: SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase, Hana] 
Apr 28, 2016 5:46:00 AM org.springframework.batch.core.job.SimpleStepHandler handleStep 
INFO: Executing step: [archiveStudentDetails] 
2016-04-28 05:46:00,894 INFO [com.sam.test.mine.batch.FileArchiverTasklet] [fileFirmsChannelPool-2] INFO - <Archiving ... > 
2016-04-28 05:46:00,902 INFO [com.sam.test.mine.batch.FileArchiverTasklet] [fileFirmsChannelPool-2] INFO - <success moving file to archive: /app/data/Student_details_20160116.txt to /app/archive/20160428/Student_details_20160116.txt.execution#33912> 
Apr 28, 2016 5:46:00 AM org.springframework.batch.core.launch.support.SimpleJobLauncher run 
INFO: Job: [FlowJob: [name=StudentDetailsJob]] completed with the following parameters: [{groupId=0, size=0, filename=file:/app/data/Student_details_20160116.txt, filenames=file:/app/data/Student_details_20160116.txt, now=1461836759909, type=STUDENT_DET}] and the following status: [COMPLETED] 
2016-04-28 05:46:00,975 INFO [com.sam.test.mine.scheduler.SchedulerService] [fileFirmsChannelPool-2] INFO - <finish deleting Ok file /app/data/Student_details_20160116.OK>> 
+0

Ich habe Ihre Konfiguration getestet (aus Ihrem XML-Beispiel) und tatsächlich Datensätze in die Datenbank eingefügt. Was DMBS verwenden Sie? Können Sie die Bean 'dataSource' (ohne Benutzer/Passwort) posten? Hast du den richtigen Treiber in deinen Abhängigkeiten? – Thrax

+0

Seine My SQL-Datenbank und ich bin in der Lage, Daten mit "org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper" mit dem gleichen Autor einfügen, so hoffe, es wird keine Datenquelle oder Verbindungsproblem sein. "com.microsoft.sqlserver.jdbc.SQLServerDriver" ist der Treiber. – Amuthan

+1

Um es mit MySQL DBMS arbeiten zu lassen, habe ich 'com.mysql.jdbc.Driver' verwendet, die Abhängigkeit ist:' mysql mysql-connector-java '. – Thrax

Antwort

0

I READ_COUNT Werte in BATCH_STEP_EXECUTION Tabelle aber WRITE_COUNT als 0 und WRITE_SKIP_COUNT auch gleiche wie Lesezählung sehe.

-Amuthan

Wenn Ihr READ_COUNT Ihre WRITE_SKIP_COUNT passt, es bedeutet, eine Ausnahme in der JdbcBatchItemWriter geworfen wird, die als Überspringbare Ausnahme in der skippable-exception-classes Eigenschaft registriert wurde.

<step id="step1"> 
    <tasklet> 
     <chunk reader="soemReader" writer="jdbcWriter" 
      commit-interval="10" skip-limit="10"> 
     <skippable-exception-classes> 
      <include class="com.package.YourException"/> 
     </skippable-exception-classes> 
     </chunk> 
    </tasklet> 
</step> 

Ich würde alle überspringbaren Ausnahmen entfernen, es sei denn, Sie haben ein echtes Geschäft, solche Fehler zu schlucken.