#google-apps-script #google-bigquery #google-cloud-storage
#google-apps-script #google-bigquery #google-облачное хранилище
Вопрос:
Я пытаюсь загрузить простой файл cvs из облачного хранилища в таблицу BigQuery с помощью скрипта apps. Я уже создал таблицу и хочу добавить файл к существующим данным в таблице. Когда я запускаю скрипт, я получаю следующее сообщение об ошибке «Параметр mediaData поддерживает только типы больших двоичных объектов для загрузки». Я не уверен, как с этим справиться, и наткнулся на кирпичную стену в поисках ответов. Вот фрагмент кода, который я использую:
function loadCloudStorageFileToBigQuery(source, datasetId, tableId, schema) {
try{
var tableReference = BigQuery.newTableReference();
tableReference.setProjectId(MY_PROJECT);
tableReference.setDatasetId(datasetId);
tableReference.setTableId(tableId);
var load = BigQuery.newJobConfigurationLoad();
load.setDestinationTable(tableReference);
load.setSourceUris([source]);
load.setSourceFormat('CSV');
load.setSchema(schema);
load.setMaxBadRecords(0);
load.setWriteDisposition('WRITE_TRUNCATE');
var configuration = BigQuery.newJobConfiguration();
configuration.setLoad(load);
var newJob = BigQuery.newJob();
newJob.setConfiguration(configuration);
var job = BigQuery.Jobs.insert(newJob, null, {projectId:MY_PROJECT});
}catch(err){
Logger.log('Table upload error: %s', err);
}
}
Любые советы или помощь будут высоко оценены.
Ответ №1:
Я решил проблему, просто изменив фактическую вставку загрузки на следующую:
var job = BigQuery.Jobs.insert(newJob, MY_PROJECT);
Я также удалил схему, поскольку таблица уже существует
Рабочая функция выглядит следующим образом:
var tableReference = BigQuery.newTableReference();
tableReference.setProjectId(MY_PROJECT);
tableReference.setDatasetId(datasetId);
tableReference.setTableId(tableId);
var load = BigQuery.newJobConfigurationLoad();
load.setDestinationTable(tableReference);
load.setSourceUris([source]);
load.setSourceFormat('CSV');
load.setMaxBadRecords(0);
load.setWriteDisposition('WRITE_APPEND');
var configuration = BigQuery.newJobConfiguration();
configuration.setLoad(load);
var newJob = BigQuery.newJob();
newJob.setConfiguration(configuration);
var job = BigQuery.Jobs.insert(newJob, MY_PROJECT);