繁体   English   中英

如何将数据批量添加到 Google Apps 脚本

[英]How to add data to a Google Apps script in batches

我有一个连接到 MySQL 数据库并将结果放入 Google 表格的 gs 脚本。 我遇到的问题是它一次只在一个循环中插入一行,而且总结果集太大而无法这样做。

function readData() {
 var conn = Jdbc.getConnection(url, username, password);
 var stmt = conn.createStatement();
 var results = stmt.executeQuery('SELECT SUBSTRING_INDEX(time, \':\', 2) as Hour, ticker, count(ticker) as count FROM wsb.data WHERE day =\'2021-01-29\' GROUP by SUBSTRING_INDEX(time, \':\', 2), ticker, day ORDER BY time desc ,count(ticker) desc');
 var metaData=results.getMetaData();
 var numCols = metaData.getColumnCount();
 var spreadsheet = SpreadsheetApp.getActive();
 var sheet = spreadsheet.getSheetByName('Sheet1');
 sheet.clearContents();
 var arr=[];

 for (var col = 0; col < numCols; col++) {
   arr.push(metaData.getColumnName(col + 1));
 }

 sheet.appendRow(arr);

while (results.next()) {
 arr=[];
 for (var col = 0; col < numCols; col++) {
   arr.push(results.getString(col + 1));
 }
 sheet.appendRow(arr);
}




results.close();
stmt.close();
sheet.autoResizeColumns(1, numCols+1);
}

有没有办法立即从 MySQL 中删除整个结果集,就像我从 MySQL 结果复制/粘贴到 MySQL Workbench 一样?

试试这个:

function readData() {
  var conn = Jdbc.getConnection(url, username, password);
  var stmt = conn.createStatement();
  var results = stmt.executeQuery('SELECT SUBSTRING_INDEX(time, \':\', 2) as Hour, ticker, count(ticker) as count FROM wsb.data WHERE day =\'2021-01-29\' GROUP by SUBSTRING_INDEX(time, \':\', 2), ticker, day ORDER BY time desc ,count(ticker) desc');
  var metaData = results.getMetaData();
  var numCols = metaData.getColumnCount();
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getSheetByName('Sheet1');
  sheet.clearContents();
  var vA = [];
  var arr = [];
  for (var col = 0; col < numCols; col++) {
    arr.push(metaData.getColumnName(col + 1));
  }

  vA.push(arr);

  while (results.next()) {
    arr = [];
    for (var col = 0; col < numCols; col++) {
      arr.push(results.getString(col + 1));
    }
    vA.push(arr);
  }




  results.close();
  stmt.close();
  sheet.getRange(1, 1, vA.length, vA[0].length).setValues(vA);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM