Я создаю приложение в Google App Maker, которое принимает введенный пользователем файл Excel CSV с 3 столбцами и 370 573 строками, то есть всего 1111 719 значений данных.Я пытаюсь эффективно ввести эти данные в базу данных MySQL, отправив пакетные запросы.Тем не менее, я не уверен, как правильно оптимизировать этот процесс, чтобы минимизировать количество времени, которое требуется.Вот как я в настоящее время завершаю процесс:
var file = DriveApp.getFileById(fileID);
var data = Utilities.parseCsv(file.getBlob().getDataAsString());
var stmt = conn.prepareStatement('INSERT INTO report '
+ '(createdDate, accountFullID, lsid) values (?, ?, ?)');
for(var i = 1; i < **data.length**; i++) {
stmt.setString(1, data[i][0]);
stmt.setString(2, data[i][1]);
stmt.setString(3, data[i][2]);
stmt.addBatch();
}
var batch = stmt.executeBatch();
conn.commit();
conn.close();
При тестировании моего кода на выполнение цикла ушло более 3 минут, когда я настроил цикл for для итерации, пока переменная i не стала меньше 500. КогдаЯ установил значение на небольшое число, например 5, для завершения потребовалось несколько секунд.Когда я устанавливаю значение в data.length (как оно в настоящее время выделено жирным шрифтом), оно никогда не завершается и по тайм-ауту исключение взаимоблокировки.Как мне отредактировать мой код, чтобы более эффективно выполнять пакеты и сократить общее время, необходимое для ввода всех записей данных из файла CSV Excel, а не только небольшой части электронной таблицы?