将 csv 文件从云存储加载到大查询

Posted

技术标签:

【中文标题】将 csv 文件从云存储加载到大查询【英文标题】:load csv file from cloud storage to big query 【发布时间】:2016-10-12 17:05:23 【问题描述】:

我正在尝试使用应用程序脚本将 Cloud Storage 中的简单 cvs 文件加载到 BigQuery 表中。我已经创建了表并希望将文件附加到表中的现有数据中。当我运行脚本时,我收到以下错误消息“mediaData 参数仅支持 Blob 类型的上传”。我不确定如何在这方面取得进展,并且在寻找答案时遇到了障碍。这是我正在使用的代码 sn-p:

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

【讨论】:

以上是关于将 csv 文件从云存储加载到大查询的主要内容,如果未能解决你的问题,请参考以下文章

使用云功能从云存储中将数据加载到BigQuery中(替代功能?)

从云存储桶加载数据时未找到数据集错误

将云存储中的文本文件 (.txt) 加载到大查询表中

使用云功能将数据加载到大查询表中,它是附加到表中的,我需要它来替换

BigQuery 错误从云存储传输 csv

通过云函数从云存储中读取数据