Как эффективно отправлять пакетные запросы через JDBC в базу данных MySQL в Google App Script? - PullRequest
0 голосов
/ 26 июня 2018

Я создаю приложение в 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, а не только небольшой части электронной таблицы?

1 Ответ

0 голосов
/ 10 мая 2019

Если это однократный импорт, я бы использовал встроенную функцию импорта создателей приложений.Создайте модель данных, которая соответствует структуре вашего cvs-документа.Затем откройте CSV в листе Google.убедитесь, что форматирование соответствует модели данных и имена полей и столбцов точно совпадают, затем используйте функцию импорта в левом верхнем углу экрана создателя приложений.выберите лист Google и модель данных, которую вы создали, затем нажмите импорт.это должно загрузить ваши данные, но это все же займет некоторое время, так как 1М элементов много.Я вижу, что это 10 месяцев, поэтому, возможно, тогда не было доступно.

https://developers.google.com/appmaker/models/import-export

...