Привет! Я использую этот скрипт приложений Google для записи данных в таблицу mysql с использованием соединения jdb c, и в последнее время объем данных в таблицах Google становится большим, и я ищу способы оптимизации сценария. Я запускаю это в пакете из 1000 записей, вызывая хранимую процедуру sql. Хранимая процедура является оператором INSERT INTO TABLE
sql. На выполнение каждого пакета уходит примерно 5 минут, а если сценарий выполняется более часа. Процесс автоматически завершается в облаке Google.
var address = 'database_IP_address';
var rootPwd = 'root_password';
var user = 'user_name';
var userPwd = 'user_password';
var db = 'database_name';
var root = 'root';
var instanceUrl = 'jdbc:mysql://' + address;
var dbUrl = instanceUrl + '/' + db;
function googleSheetsToMySQL() {
var RecId;
var Code;
var ProductDescription;
var Price;
var dbconnection = Jdbc.getConnection(dbUrl, root, rootPwd);
var statement = dbconnection.createStatement();
var googlesheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('product');
var data = googlesheet.getDataRange().getValues();
dbconnection.setAutoCommit(false)
for (var i = 1; i < data.length; i++) {
RecId = data[i][0];
Code = data[i][1];
ProductDescription = data[i][2];
Price = data[i][3];
var sql = "{call [dbo].[sp_googlesheetstotable](?,?,?,?)}";
statement = dbconnection.prepareCall(sql);
statement.setString(1, RecId);
statement.setString(2, Code);
statement.setString(3, ProductDescription);
statement.setString(4, Price);
statement.addBatch()
}
statement.executeBatch()
dbconnection.commit()
statement.close();
dbconnection.close();
}