Файл Parse Pipe с разделителями при загрузке Spring - PullRequest
0 голосов
/ 10 марта 2020

У меня есть файл Excel, в котором в столбце А содержатся данные с разделителями по трубе для ряда строк. В первой строке указывается дата, а затем - данные. В каждой строке есть дополнительные данные, но мне нужны только первые 3 поля в каждой строке (имя учетной записи, номер учетной записи, домен учетной записи). Последняя строка имеет количество строк в каждом файле. Ниже приведен пример файла

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

. Я создал приложение весенней загрузки java и настроил свои конфигурации базы данных. Мне нужна помощь в создании службы, которая может анализировать файл и вставлять данные в таблицу и сравнивать их с количеством строк для сопоставления. Я следую этому примеру для руководства, но мой файл не является CSV https://howtodoinjava.com/spring-batch/csv-to-database-java-config-example/

1 Ответ

1 голос
/ 10 марта 2020

Вы можете разобрать файл следующим образом:

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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...