У меня есть скрипт для обновления Google Cloud SQL DB из CSV, прикрепленной к почте.
Проблема в том, что файл csv большой. Интересно, можно ли сделать расчет на CSV до передачи данных. Например:
Выберите Col5, Col8, Col9, сумму (Col11), группу Col5, Col8, Col9
Затем с этими данными создайте мой оператор SQL для импорта.
Это мой фактический код:
function writeManyRecords() {
var conn = Jdbc.getCloudSqlConnection(dbUrl, user, userPwd);
conn.setAutoCommit(false);
var stmt = conn.prepareStatement('TRUNCATE test_orders');
stmt.execute();
conn.commit();
var threads = GmailApp.search('label:stock_fastmag subject:"Analyse_ventes"');
var message = threads[0].getMessages()[0];
var attachment = message.getAttachments()[0];
attachment.setContentType('text/csv');
// Is the attachment a CSV file
if (attachment.getContentType() === "text/csv") {
var data = Utilities.parseCsv(attachment.getDataAsString(), ";");
var start = new Date();
var stmt = conn.prepareStatement('INSERT INTO test_orders '
+ '(Vente, Date, Heure, CodeMag, Total) values (?, ?, ?, ?, ?)');
for (var i = 0; i < data.length; i++) {
stmt.setString(1, data[i][0]);
stmt.setString(2, data[i][1]);
stmt.setString(3, data[i][2]);
stmt.setString(4, data[i][3]);
stmt.setString(5, data[i][4]);
stmt.addBatch();
}
var batch = stmt.executeBatch();
conn.commit();
}
conn.close();
var end = new Date();
Logger.log('Time elapsed: %sms for %s rows.', end - start, batch.length);