【发布时间】:2021-09-21 17:13:20
【问题描述】:
当我尝试从谷歌存储桶读取文件并在 bigquery 表中加载数据时,谷歌存储桶会抛出超时错误。有没有办法同步读取文件并加载到 bigquery 表。
这适用于文件较少的情况,并且尝试使用 then 也会出现同样的错误。
const { BigQuery } = require('@google-cloud/bigquery');
const { Storage } = require('@google-cloud/storage');
var fs = require("fs");
const bucketName = 'bucketname';
const gcpProject = "projectname";
const datasetprojectname = "bqprojectname";
const datasetId = "dsname";
const tableId = "tablename";
exports.helloworld = async (req, res) => {
const bigquery = new BigQuery({ projectId: datasetprojectname });
const storage = new Storage(gcpProject);
const loaddatabq = new Storage(gcpProject);
const bucket = storage.bucket(bucketName);
const fileoptions = {
prefix: "singlefile"
};
var filecount = 0;
var errcount = 0;
var filemoveerrcount = 0;
const [getfilename] = await bucket.getFiles(fileoptions);
var filenamespring = "";
var getjson = null;
getfilename.forEach(async files => {
try {
filecount++;
var filename = files.name;
if (filename != "singlefile/") {
var contents = await files.download(files.name);
await bigquery.dataset(datasetId).table(tableId).insert(JSON.parse(contents).body);
}
}
catch (err) {
}
});
};
【问题讨论】:
-
您的 JSON 是内联的还是文件中漂亮的打印(缩进)?
-
JSON 内联,如果需要,我可以将其修改为漂亮的打印。
标签: node.js google-bigquery google-cloud-functions