当前位置: 首页 > 知识库问答 >
问题:

是否可以使用Spring批处理从web应用程序上载的多部分CSV文件?

孔阳平
2023-03-14

我想将包含学生数据的csv文件转换为列表并插入数据库。我已经阅读了许多来自不同来源的示例,其中没有一个提供了使用spring batch对从Web UI上传的csv文件进行批处理的答案。所有示例都处理位于资源文件夹(classpath)中的csv文件。请帮助我处理使用Post方法上传的csv文件,如下所示。

@PostMapping("/save")
public ResponseEntity saveStudentDetails(@RequestParam("file") MultipartFile studentCSV) {
   //code to initate batch processing for studentCSV file
}

提前谢谢。

共有1个答案

严成礼
2023-03-14

控制器

@RequestMapping(method = RequestMethod.POST, value = "/save")
        public ReturnFormat uploadCSV(@RequestParam("files")  MultipartFile file )
        {
            return uploadingService.uploadCSV( file );
        }

服务类会像

    public void uploadCSV (MultipartFile multipartFile)
    {
        ReturnFormat rf = new ReturnFormat();
        SuccessErrorList selist = new SuccessErrorList();
        try
        {
            File file = convertMultiPartToFile( multipartFile );

    }

    private File convertMultiPartToFile( MultipartFile file ) throws IOException
    {
        File convFile = new File( file.getOriginalFilename() );
        FileOutputStream fos = new FileOutputStream( convFile );
        fos.write( file.getBytes() );
        fos.close();
        return convFile;
    }
 类似资料:
  • 一段时间以来,我一直在寻找解决spring batch问题的方法。我应该使用spring batch从csv文件复制/创建新的csv文件。这里有一个例子: 下面是一个创建输出编号1的示例,例如File1: 其他输出文件也是一样的,但是你可以看到一些输出使用相同的源,事实上,我不能读取相同的数据两次来重新生成一个新的输出,所以我尝试将它们作为资源存储在地图上(资源将被使用不止一个),也就是说,我将

  • 我开发了一个使用Apache Camel的Spring Boot应用程序,该应用程序在我的IDE IntelliJ思想中运行良好。 我的路线非常简单,因为我只想将一个文件从A点移动到B点,只要我在应用程序中配置了Camel-Endpoints.properties中,一切都很好,并且文件被成功地移动了。 但是当我执行这个命令时,我只能从命令行获得如何定义命令的帮助。当我将其更改为Spring-Bo

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

  • 我正在开发一个Spring Batch应用程序。我将这个应用程序作为ajar文件部署在一个生产Linux服务器上,并作为一个普通的jar应用程序运行。我的Spring Batch应用程序已经启动并运行,实际上我的updateInfoBatch-0.0.1-snapshot.jar似乎是作为进程启动并运行的: 我的应用程序包含两个使用CRON表达式在特定时间调度的作业定义: 现在,我询问是否有某种方

  • 嗨,我是新春批。 我有如下Spring批次的情况: 我需要运行所有促销的批处理[促销列表] > 在这里,我想再次从batch中读取上面的动态查询,因为它返回的结果至少为5万条记录。 以下是我所期待的过程,这在Spring批次中是否可行? 阅读促销【读者逐一阅读促销】 创建查询并将其放在上下文中 传递给下一个读者 读取器逐个读取事务 处理交易并计算积分 我这里的问题是不能写嵌套块[一个用于读取提升,

  • 我读过spring batch中的分区,我发现了一个演示分区的示例。该示例从CSV文件中读取人员,进行一些处理,并将数据插入数据库。在本例中,1 partitioning=1 file,因此partitioner实现如下所示: 但如果我有一个10TB的文件呢?spring批处理是否允许以某种方式对其进行分区? 我尝试了以下方法来实现我的目标: 分为两步——第一步将文件分成若干部分,第二步处理第一步