簡體   English   中英

超過最大執行時間的大數據集

[英]Large data set exceeding maximum execution time

我有一個腳本將電子表格的內容加載到scriptDB中,但電子表格大約有15,000行,9列並且不斷給出“超出最大執行時間”錯誤。

我正在使用Google文檔中提供的功能來加載數據:

function loadDatabaseFromSheet() {
  var spreadsheet = SpreadsheetApp.openById(SPREADSHEET_KEY);
  var sheet = spreadsheet.getActiveSheet();
  var columns = spreadsheet.getLastColumn();
  var data = sheet.getDataRange().getValues();
  var keys = data[0];
  var db = ScriptDb.getMyDb();
  for (var row = 1; row < data.length; row++) {
    var rowData = data[row];
    var item = {};
    for (var column = 0; column < keys.length; column++) {
      item[keys[column]] = rowData[column];
    }
    db.save(item);
  }
}

有什么方法可以加快速度,或者我只是要把它分解成幾千塊?

調用db.save(item) 15000次是造成緩慢的原因。 相反,如果您要保存那么多數據,請使用批量操作

  var db = ScriptDb.getMyDb();
  var items = [];
  for (var row = 1; row < data.length; row++) {
    var rowData = data[row];
    var item = {};
    for (var column = 0; column < keys.length; column++) {
      item[keys[column]] = rowData[column];
    }
    items.push(item);
  }
  db.saveBatch(items,false);

最后一次調用保存操作可以節省所有往返時間,因此這樣可以大大加快代碼的速度,並在超過最大執行時間之前完成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM