загрузка csv-файла из облачного хранилища в большой запрос

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