Группа и сумма от импорта csv beore - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть скрипт для обновления 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);
...