如何读取不应包含“”或“或换行符的csv文件,然后将修改后的csv插入db

时间:2018-11-14 07:17:29

标签: java regex apache-poi

我有一个csv文件,应该使用apache poi读取它,而读取文件时,它应该遵循某种模式,例如数据不应该带有'或''或这样的新行。验证之后,我们需要将经过验证的csv插入db。我为此编写的代码如下。

@RequestMapping(value = "/insert", method = RequestMethod.POST)
public void uploadData(@RequestParam("file") final MultipartFile DataFile,
            @PathVariable("DataType") final String DataType,
            final Model model, final HttpServletRequest request,
            final HttpServletResponse response) throws Exception {

    byte[] bytes = null;
    InputStream inputStream = null;

    if (DataFile != null && !DataFile.isEmpty()) {
        inputStream = DataFile.getInputStream();
        LOGGER.info("Making Service call to save imported Enrichment details in DB ");

        if (StringUtils.equalsIgnoreCase(DataType, "csvData1")) {
            bytes = enrichmentDataFile.getBytes();
            inputStream = new ByteArrayInputStream(Pattern.compile("(\\r\"|\\n\"|\\r\"\\n\"|\"|\')+")
                        .matcher(new String(bytes)).replaceAll("").getBytes(Charset.forName("UTF-8")));
            DataService.insertData(inputStream, 
            DataFile.getOriginalFilename());//reading data using Apache POI and inserting into db
        } else if (StringUtils.equalsIgnoreCase(DataType, "csvData2")) {
                DataService.insertData(inputStream, 
                DataFile.getOriginalFilename());//reading data using Apache POI and inserting into db
        }
    }
}

可以将csvData2插入数据库,但是当iam尝试插入csvData1时,它正在创建一个空文件,并且该文件正在插入db。 谁能建议我如何在没有任何'或'或换行的情况下验证inputstream(scv),然后将经过验证的代码插入db

1 个答案:

答案 0 :(得分:0)

您的InputStream变异效果很好。问题应该在DataService.insertData方法中。