Мне нужно прочитать записи из файла CSV и сохранить их в базе данных Mysql.
Я знаю о «LOAD DATA INFILE», но в моем случае мне нужно получить одну запись из файла, проверить, имеет ли она допустимый формат/длину и т. д., а затем сохранить ее в базе данных.
// list to store records from CSV file
ArrayList<String> list = new ArrayList<String>();
//Read one line at a time
while ((nextLine = reader.readNext()) != null)
{
for (String number : nextLine)
{
if (number.length() > 12 && number.startsWith("88"))
{
list.add(number);
} else if (number.length() > 9 && number.startsWith("54"))
{
list.add(number);
}
else if (number.length() > 8 && number.startsWith("99"))
{
list.add(number);
}
else
{
// ....
}
// method to insert data in database
insertInToDatabase(list);
}
}
и способ вставки записи в БД: взято отсюда
private void insertInToDatabase(ArrayList<String> list)
{
try
{
String query = "INSERT INTO mytable(numbers) VALUES(?)";
prepStm = conn.prepareStatement(query);
for (String test : list)
{
prepStm.setString(1, test);
prepStm.addBatch();// add to batch
prepStm.clearParameters();
}
prepStm.executeBatch();
}
}
Это работает, но скорость вставки записей очень низкая. есть ли способ, с помощью которого я могу вставлять записи быстрее.