Atualize o MySQL do CSV usando JAVA

meu problema é o seguinte:

O arquivo CSV é baixado em intervalos determinados do servidor.

O arquivo deve ser analisado (há espaços desnecessários que precisam ser removidos).

O preço do item, o rrp e a quantidade do estoque devem ser atualizados para cada código de barras.

Cada linha CSV contém o número do artigo, o título do produto, o ID do depósito, o nome do depósito, o preço, o preço de rrp, o estoque e o código de barras. A tabela de itens contém cerca de 71000 linhas. E o código de barras não é uma chave exclusiva no banco de dados (porque o item com o mesmo código de barras pode estar em armazéns diferentes). O problema é que leva mais de uma hora para atualizar no servidor localhost do MySQL (cerca de meia hora para o SQLite). Existe alguma maneira de otimizar a consulta SQL para tornar as coisas mais rápidas? Meu código atual é assim:

    public void updateData (BufferedReader bufferedReader, Connection sqlConnection){
    String csvLine = null;
    PreparedStatement preparedStatement = null;
    String sqlString = "UPDATE items SET price = ?, rrp = ?, stock = ? WHERE departmentid = ? AND barcode = ?";
    try {
        preparedStatement = sqlConnection.prepareStatement(sqlString);
        while ((csvLine = bufferedReader.readLine()) != null) {
            String[] splitLine = csvLine.split(";");
            preparedStatement.setBigDecimal(1, new BigDecimal(splitLine[4].trim()).setScale(2, RoundingMode.CEILING));
            preparedStatement.setBigDecimal(2, new BigDecimal(splitLine[5].trim()).setScale(2, RoundingMode.CEILING));
            preparedStatement.setInt(3, Integer.parseInt(splitLine[6].trim()));
            preparedStatement.setString(4, splitLine[2].trim());
            preparedStatement.setString(5, splitLine[8].trim());
            preparedStatement.executeUpdate();
        }
    } catch (IOException | SQLException exc) {
        System.out.println(exc.getMessage());
    } finally {
        try {
            sqlConnection.commit();
            preparedStatement.close();
            sqlConnection.close();
        } catch (SQLException exc) {
            exc.printStackTrace();
        }
    }
}

Até agora, a solução mais rápida parece sugerida por @ e4c5 com dados LOAD csv para tabela temporária e usando a consulta:UPDATE items INNER JOIN temp_table ON items.barcode = temp_table.barcode SET items.rrp = temp_table.rrp, items.price = temp_table.price, items.stock = temp_table.stock WHERE items.barcode = temp_table.barcode AND items.departmentid = temp_table.departmentid. Alguma maneira de tornar isso ainda mais rápido?

questionAnswers(2)

yourAnswerToTheQuestion