You can use skip(int numberOfLinesToSkip) method from CSVReader class.
users.csv:
firstName,lastName
Edward,Norton
Brad,Pitt
My Spring Boot example:
implementation "com.opencsv:opencsv:$openCsvVersion"
import com.opencsv.CSVReader;
@Value("${users.csv.file.name}")
private String usersCsvFileName;
public void fillUsersFromCsv() {
List<User> users = new ArrayList<>();
var resource = resourceLoader.getResource("classpath:csv/" + usersCsvFileName);
try (var inputStream = resource.getInputStream();
var inputStreamReader = new InputStreamReader(inputStream);
var csvReader = new CSVReader(inputStreamReader)) {
csvReader.skip(1);
String[] nextRecord;
while ((nextRecord = csvReader.readNext()) != null) {
var firstName = nextRecord[0];
var lastName = nextRecord[1];
var user = User.builder()
.firstName(firstName)
.lastName(lastName)
.build();
users.add(user);
}
} catch (Exception e) {
log.error("Failed to read users from usersCsvFileName file: {}", e.getMessage());
}
userRepository.saveAll(users);
log.error("{} users from usersCsvFileName successfully saved to DB", users.size());
}