无法使用Google App脚本将压缩后的csv上传到BigQuery中,且数据量更大

时间:2018-08-14 13:20:34

标签: google-apps-script google-bigquery

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

我尝试在较小的zip上尝试(zip大小大约为数百KB,解压缩后为25MB),并且没有问题。但是,当它变大时(zip压缩为3MB,解压缩时为77MB),在处理Job.Load时会出现错误消息。想知道是否有人遇到过此问题并愿意分享一些技巧。谢谢。

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

代码如下:

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);
}

1 个答案:

答案 0 :(得分:0)

通过@Adventurous Leo发布答案以提高知名度

  

我想我才意识到为什么会这样。这是我的配额,我只有   每个URI 50MB,我将减小大小并批量上传。仍然   谢谢你们两个给我的指示