如何设置表格的架构以在Google App Scripts中从Google云端存储中获取数据时自动检测?

时间:2018-03-20 17:12:33

标签: google-apps-script google-bigquery google-cloud-storage

我有一个Google App脚本,可以通过从Google云端存储中获取更新的数据来自动更新Bigquery中的表格。

function loadCloudStorageFileToBigQuery(source,ProjectId, datasetId, tableId, schema) {  
    try{

        source="xxxxx";
        ProjectId="xxxxxx";
        datasetId="xxxxxx";
        tableId="xxxxxxx";
        schema={"configuration.load.autodetect":'true'};

        var tableReference = BigQuery.newTableReference();
        tableReference.setProjectId(ProjectId);
        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, ProjectId);

    }catch(err){ 
        Logger.log('Table upload error: %s', err);  
    } 
}

脚本似乎工作正常,因为我可以在Big查询中看到作业历史记录中的错误。该错误表示未定义架构。我想将架构设置为自动检测。有人可以建议我需要在我的脚本中进行更改吗?

1 个答案:

答案 0 :(得分:1)

添加" load.setAutodetect(true);"

更多细节: https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs#configuration.load