使用Spring Boot解析管道分隔文件

问题描述 投票:0回答:1

我有一个excel文件,其中A列中有管道分隔的数据用于多个行。第一行有日期,然后是日期。每行都有额外的数据,但我只希望每行的前3个字段(帐户名,帐号,帐户域)。最后一行在每个文件中都有行数。以下是文件示例

20200310|
Mn1223|01192|windows|extra|extra|extra||
Sd1223|02390|linux|extra|extra|extra||
2

我创建了一个Spring Boot Java应用程序并设置了数据库配置。我需要帮助来创建一个服务,该服务能够解析文件并将数据插入表中并与行数进行比较以进行匹配。我正在按照此示例进行指导,但我的文件不是csv https://howtodoinjava.com/spring-batch/csv-to-database-java-config-example/

java spring-boot datatable delimited-text
1个回答
0
投票

您可以这样解析文件:

List<DataToInsert> parseData(String filePath) throws IOException {

        List<String> lines = Files.readAllLines(Paths.get(filePath));

        // remove date and amount
        lines.remove(0);
        lines.remove(lines.size() - 1);

        return lines.stream()
                .map(s -> s.split("[|]")).map(val -> new DataToInsert(val[0], val[1], val[2])).collect(Collectors.toList());
    }

以及您的班级是这样的:

class DataToInsert {
    private final String accountName;
    private final String accountNumber;
    private final String accountDomain;

    public DataToInsert(String accountName, String accountNumber, String accountDomain) {
        this.accountName = accountName;
        this.accountNumber = accountNumber;
        this.accountDomain = accountDomain;
    }

    public String getAccountName() {
        return accountName;
    }

    public String getAccountNumber() {
        return accountNumber;
    }

    public String getAccountDomain() {
        return accountDomain;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.