首页 > 解决方案 > 无法使用 Google App Script 将解压缩的 csv 上传到具有更大数据的 BigQuery

问题描述

我使用平台将带有 CSV/ZIP 文件的报告自动发送到我的 Gmail,平台将根据大小决定发送哪种类型。我构建了这个 Google Apps 脚本来将此文件推送到 BigQuery。

我在较小的 zip 上尝试了这个(zip 像几百 KB,解压缩时为 25MB),它没有问题。但是,当它变得更大时(像 3MB 这样的压缩文件,解压缩时是 77MB),我在处理 Job.Load 时收到一条错误消息。想知道是否有人遇到过这个问题并愿意分享一些提示。谢谢。

抱歉,我的用户界面上显示的错误消息是中文,所以我只是跳过将其附加到此线程:(

这是代码:

function BQLoad() {
var projectId = 'quantum-feat-211902';
var datasetId = 'DBM_dataset01';
var tableId = 'test';
var thread = GmailApp.getInboxThreads(0,1)[0]; 
var message = thread.getMessages()[0]; 
var attachments = message.getAttachments()[0];
var firstThread = GmailApp.getInboxThreads(0,1)[0];
var messages = firstThread.getMessages();
var job = {
configuration: {
  load: {
    destinationTable: {
      projectId: projectId,
      datasetId: datasetId,
      tableId: tableId,
    },
    skipLeadingRows: 1,
    ignoreUnknownValues: true,
    writeDisposition: "WRITE_TRUNCATE",
    sourceFormat: 'CSV',
    fieldDelimiter: ',',
    allowJaggedRows: true,
    encoding: "UTF-8",
    maxBadRecords: 1000,
  },
},
};
for (var i = 0; i < messages.length; i++) {
Logger.log(messages[i].getSubject());
}
Logger.log(attachments.getContentType());
if (attachments.getContentType() === "application/zip") {
var data = Utilities.unzip(attachments)[0];
}
else {
var data = attachments;
}
job = BigQuery.Jobs.insert(job, projectId, data);
Logger.log('Load job started. Check on the status of it here: ' +
  'https://bigquery.cloud.google.com/jobs/%s', projectId);
}

标签: google-apps-scriptgoogle-bigquery

解决方案


发布来自@Adventurous Leo 的答案以提高知名度

我想我才明白为什么会这样。这是我的配额,我每个 URI 只有 50MB,我将减小大小并进行批量上传。还是谢谢你们两个给我指路


推荐阅读