【问题标题】:How do I INSERT into Big Query via Apps script with a 2D array from a Google sheet?如何通过 Google 表格中的二维数组通过 Apps 脚本插入 Big Query?
【发布时间】:2021-03-25 17:39:05
【问题描述】:

我在大查询中有一个设置了架构的空白表。

我在 Google 工作表中有数据,其中列的顺序与表架构的顺序相同。

当我从 Google 电子表格中获取数据时,我得到一个二维数组 [[xxx1,yyy1,zzz1],[xxx2,yyy2,zzz2]] 等

如何将数组内容插入到 Big Query 表中?

我认为我需要使用以下代码 - 但是 data 变量的格式是什么?如何将我的数组转换为该格式

let job = {
configuration: {
  load: {
    destinationTable: {
      projectId: projectId,
      datasetId: datasetId,
      tableId: tableId
    }
  }
}
};
job = BigQuery.Jobs.insert(job, projectId, data [what do I need here??]);

非常感谢

编辑:我应该补充一点,我不能将谷歌表直接连接到表和流。该工作表只是收集每周数据行并向其添加一些位然后将其转储到大查询的权宜之计 - 最终将有数千行,因此不能留在 Google 工作表中

EDIT2:数据也是各种类型的字符串、整数和日期

【问题讨论】:

    标签: google-apps-script google-bigquery


    【解决方案1】:

    问题:

    • BigQuery.Jobs 接受 blob data。所以你需要它以 blob 形式。

    修复:

    • 使用newBlob 将数据转换为blob 形式。
    function test() {
      var sheet = SpreadsheetApp.getActiveSheet();
      var rows = sheet.getRange("A1:B2").getValues();
      // rows data is 2D string array
      Logger.log(rows); 
    
      // newBlob only accepts String so we convert rows into one
      var rowsString = rows.join("\n");
      Logger.log(rowsString);
    
      // data below is now of type Blob object
      var data = Utilities.newBlob(rowsString, 'application/octet-stream');
      Logger.log(data); 
    }
    

    输出:

    参考资料:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-05
      • 2019-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-17
      相关资源
      最近更新 更多