Ich verwende Spring Boot 1.4 und Spring Batch 1.4, um eine Datei einzulesen und natürlich die Daten in die Datenbank zu parsen.Wie speichere ich die gesamte Leseleitung mit Spring Batch?
Was ich tun möchte, ist die gesamte Zeile in der Datenbank gelesen zu speichern, bevor die Felder zugeordnet werden. Die gesamte Zeile wird als String in der Datenbank gespeichert. Dies ist für Überwachungszwecke, daher möchte ich die Zeilenzeichenfolge nicht aus ihren Komponenten neu erstellen.
Wir haben alle gemeinsam Mapper im Einsatz gesehen die Daten aus der begrenzten Linie zu bekommen:
@Bean
@StepScope
public FlatFileItemReader<Claim> claimFileReader(@Value("#{jobParameters[fileName]}") String pathToFile) {
logger.debug("Setting up FlatFileItemReader for claim");
logger.debug("Job Parameter for input filename: " + pathToFile);
FlatFileItemReader<Claim> reader = new FlatFileItemReader<Claim>();
reader.setResource(new FileSystemResource(pathToFile));
reader.setLineMapper(claimLineMapper());
logger.debug("Finished setting up FlatFileItemReader for claim");
return reader;
}
@Bean
public LineMapper<Claim> claimLineMapper() {
logger.debug("Setting up lineMapper");
DefaultLineMapper<Claim> lineMapper = new DefaultLineMapper<Claim>();
DelimitedLineTokenizer lineTokenizer = new DelimitedLineTokenizer();
lineTokenizer.setDelimiter("|");
lineTokenizer.setStrict(false);
lineTokenizer.setNames(new String[] { "RX_NUMBER", "SERVICE_DT", "CLAIM_STS", "PROCESSOR_CLAIM_ID", "CARRIER_ID", "GROUP_ID", "MEM_UNIQUE_ID" });
BeanWrapperFieldSetMapper<Claim> fieldSetMapper = new BeanWrapperFieldSetMapper<Claim>();
fieldSetMapper.setTargetType(Claim.class);
lineMapper.setLineTokenizer(lineTokenizer);
lineMapper.setFieldSetMapper(claimFieldSetMapper());
logger.debug("Finished Setting up lineMapper");
return lineMapper;
}
Wenn dies meine Reihe ist: 463.832 | 20160101 | PAID | 504419000000 | XYZ | GOLD PLAN | 561868
Ich würde "463832 | 20160101 | PAID | 504419000000 | HBT | GOLD PLAN | 561868" als Zeichenfolge in der Datenbank speichern (wahrscheinlich mit einigen zusätzlichen Daten wie job_instance_id).
Irgendwelche Ideen, wie man dies während des Dateileseprozesses einrichtet?