У меня есть код, который анализирует файл, а затем вставляет строки в таблицу. Первоначально я проигнорировал первую строку, потому что в ней были только дата и бесполезные данные. Я хочу взять дату и вставить ее во все строки в моей таблице, но не знаю, как на самом деле это сделать. Я знаю, что мне нужно будет отредактировать свою сущность, чтобы включить в нее дату, но я не знаю, как редактировать мой код для разбора даты, или лучше использовать новый метод, который просто вставляет дату.
формат файла
20200310|extra|extra|extra||
Mn1223|01192|windows|extra|extra|extra||
Sd1223|02390|linux|extra|extra|extra||
2
текущая таблица
account_name command_name system_name createDt
Mn1223 01192 windows NULL
Sd1223 02390 linux NULL
Я хочу, чтобы 20200310
был вставлен в createDt
Объект / модель
public ZygateEntity(String accountName, String commandName, String systemName){
this.accountName=accountName;
this.commandName=commandName;
this.systemName=systemName;
}
//getters and setters
Метод анализа файла
private List<ZygateEntity> parseZygateData() throws IOException {
String filePath = "C:\\DEV\\Test_file.xlsx";
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 ZygateEntity(val[0],val[1],val[2])).collect(Collectors.toList());
}
метод вставки
public void insertZygateData(List<ZygateEntity> parseData) {
String sql = "INSERT INTO Landing.midrange_xygate_load (account_name,command_name,system_name)"+
"VALUES (:account_name,:command_name,:system_name)";
for (ZygateEntity zygateInfo : parseData){
SqlParameterSource source = new MapSqlParameterSource("account_name", zygateInfo.getAccountName())
.addValue("command_name", zygateInfo.getCommandName())
.addValue("system_name", zygateInfo.getSystemName());
namedParameterJdbcTemplate.update(sql, source);
}
}