当前位置: 首页 > 面试题库 >

春季批处理csv:向csv添加多个标头

韩季
2023-03-14
问题内容

如何在csv中编写多头标头,以便第二个标头值应来自数据库

//预期的输出

personId,firstName,lastName,email,age
fullname,total // this is the second header which  should come the database
kaa,karthi,sa,123@,34

//以下是用于弹簧批处理写入csv的代码段

@Bean(destroyMethod="")
    public JdbcCursorItemReader<Person> reader(){
        JdbcCursorItemReader<Person> cursorItemReader = new JdbcCursorItemReader<>();
        cursorItemReader.setDataSource(dataSource);
        cursorItemReader.setSql("SELECT person_id,first_name,last_name,email,age FROM springbatchdb.person");
        cursorItemReader.setRowMapper(new PersonRowMapper());
        return cursorItemReader;
    }
    @Bean(destroyMethod="")
    public PersonItenProcessor processor(){
        return new PersonItenProcessor();
    }

    @Bean(destroyMethod="")
    public FlatFileItemWriter<Person> writer(){
        FlatFileItemWriter<Person> writer = new FlatFileItemWriter<Person>();
        String exportFileHeader = "personId,firstName,lastName,email,age";
        StringHeaderWriter headerWriter = new StringHeaderWriter(exportFileHeader);
        writer.setHeaderCallback(headerWriter);

        writer.setResource(new ClassPathResource("person.csv"));
        DelimitedLineAggregator<Person> lineAggregator = new DelimitedLineAggregator<Person>();
        lineAggregator.setDelimiter(",");

        BeanWrapperFieldExtractor<Person>  fieldExtractor = new BeanWrapperFieldExtractor<Person>();
        fieldExtractor.setNames(new String[]{"personId","firstName","lastName","email","age"});
        lineAggregator.setFieldExtractor(fieldExtractor);

        writer.setLineAggregator(lineAggregator);
        return writer;
}

问题答案:

您可以在中执行查询,FlatFileHeaderCallback并将结果附加到标题的第一行。



 类似资料:
  • 我有一个商业案例,使用Spring batch将多个csv文件(每个文件大约1000个,包含1000条记录)合并成单个csv。 请帮助我提供方法和性能方面的指导和解决方案。 到目前为止,我已经尝试了两种方法, 方法1。 Tasklet chunk与multiResourceItemReader一起从目录中读取文件,FlatFileItemWriter作为项目编写器。 这里的问题是,它的处理速度非常

  • 问题内容: 我的项目有此要求,即用户上传一个CSV文件,该文件必须被推送到mysql数据库。我知道我们可以使用Spring批处理来处理大量记录。但是我找不到适合我的这一要求的任何教程/示例代码。我遇到的所有教程都只是将CSV文件名硬编码为如下所示: https://spring.io/guides/gs/batch- processing/ 我需要使用用户上传的文件并进行相应处理。在这里的任何帮助

  • 在使用Spring批处理实现标题之前,我必须在CSV文件中添加一行免责声明。例如,下面是我预期的CSV文件: 免责声明XYZ。。。Col1 Col2 Col3 abc efg pqr 目前,我正在使用FlatFileItemWriter和FlatFileHeaderCallBack创建CSV文件,并在其中写入标题及其相应的值。 但我不能添加免责声明,然后按照上面显示的标题。 下面是我的代码一瞥:

  • 我有一个CSV文件,有五列和数百行。我想给每一列添加一个标题。例如 我已经尝试了下面的代码,它确实成功地添加了标题,但是,它也将所有列合并为一个。这不是我想要的 此代码将导致下表

  • 问题内容: 我是Spring Batch的新手,但遇到了问题。 我正在处理的批处理应用程序从分隔的文本文件中读取和处理行。我已将应用程序配置为使用FlatFileReader来读取带分隔符的文本文件,但问题是正在读取的某些数据中带有双引号。当FlatFileReader遇到单引号时,将引发FlatFileParseException,但是当存在两个双引号时,则不会引发FlatFileParseEx

  • 问题内容: 我编写了一个Python脚本,用于合并两个csv文件,现在我想在最终的csv中添加标头。我尝试按照此处报告的建议进行操作,但出现以下错误:。解决此问题的最有效方法是什么? 这是我正在使用的代码: 问题答案: 该班预计 字典 的每一行。如果您只想编写一个初始标头,请使用常规并在标头的简单行中传递: 另一种方法是在跨数据复制时生成字典: