google-apps-script - 无法使用 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);
}
解决方案
发布来自@Adventurous Leo 的答案以提高知名度
我想我才明白为什么会这样。这是我的配额,我每个 URI 只有 50MB,我将减小大小并进行批量上传。还是谢谢你们两个给我指路
推荐阅读
- javascript - React-Native/Firebase:来自 JS 的格式错误的调用:字段大小不同
- symfony - symfony messenger 多总线
- php - wp 使用 ACF 关系按成分类别过滤食谱
- ios - 我想在单击单元格时更改集合视图单元格的图像
- reactjs - 如何使用 Github Actions 保存构建文件(React)?
- java - 如何解决此计算器错误?我是初学者
- python - 并非所有字段都在 django admin 中正确显示
- python - 我如何将这些数字写入其中的列表,因为我尝试使用 for 循环但它不起作用并将其写入名为 list_of_numbers 的列表
- biginteger - 不调用大量函数
- firebase - Flutter Web NoSuchMethodError 上的 Firebase 火库。“文档”