Google api 将文件从Google驱动器加载到Bigquery

Google api 将文件从Google驱动器加载到Bigquery,google-api,google-bigquery,google-drive-api,Google Api,Google Bigquery,Google Drive Api,我有一个API,它在我的网站上获取一个加载的文件,并通过API将其与mimeType text/csv一起上传到Google Drive 这创造了奇迹,但是,我现在需要将该文件作为永久表加载到GoogleBigQuery中 我有两种方法: 首选:将上传的文件和mimeType上传到谷歌表单上——我认为drive可以用csv来实现这一点,但显然不是——也许有办法 将文件从text/csv直接加载到Bigquery中-我收到了无效的URI 我的PHP CURL命令如下: $curl = curl_i

我有一个API,它在我的网站上获取一个加载的文件,并通过API将其与mimeType text/csv一起上传到Google Drive

这创造了奇迹,但是,我现在需要将该文件作为永久表加载到GoogleBigQuery中

我有两种方法:

  • 首选:将上传的文件和mimeType上传到谷歌表单上——我认为drive可以用csv来实现这一点,但显然不是——也许有办法

  • 将文件从text/csv直接加载到Bigquery中-我收到了无效的URI

  • 我的PHP CURL命令如下:

    $curl = curl_init();
    
    curl_setopt_array($curl, array(
      CURLOPT_URL => "https://bigquery.googleapis.com/bigquery/v2/projects/xxxxxxx/datasets/xxxxx/tables",
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_ENCODING => "",
      CURLOPT_MAXREDIRS => 10,
      CURLOPT_TIMEOUT => 30,
      CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
      CURLOPT_CUSTOMREQUEST => "POST",
      CURLOPT_POSTFIELDS => "{\n  \"externalDataConfiguration\": {\n    \"sourceUris\": [\n      \"https://drive.google.com/file/d/{$id}/\"\n    ],\n    \"sourceFormat\": \"CSV\",\n    \"autodetect\": true\n  },\n  \"tableReference\": {\n    \"tableId\": \"{$user}\"\n  }\n}",
      CURLOPT_HTTPHEADER => array(
        "Accept: */*",
        "Accept-Encoding: gzip, deflate",
        "Authorization: Bearer",
        "Cache-Control: no-cache",
        "Connection: keep-alive",
        //"Content-Length: 319",
        "Content-Type: application/json",
        "Host: bigquery.googleapis.com",
        "User-Agent: PostmanRuntime/7.17.1",
        "cache-control: no-cache"
      ),
    ));
    
    $response = curl_exec($curl);
    $err = curl_error($curl);
    
    curl_close($curl);
    
    if ($err) {
      echo "cURL Error #:" . $err;
    } else {
      echo $response;
    }
    
    使用第二种方法返回以下内容-但是,第一个奖励是让第一步工作正常,将文件类型更改为Google Sheets-我已经有了一个更新功能来设置标题,因此如果需要添加,我可以

    "Invalid source URI: https://drive.google.com/file/d/1Zt6OMQqE3rj1PJe4HlokQ4LPNfOPBHfB/
    
    发件人:

    目前不支持从Google Drive将数据加载到BigQuery中,但您可以使用外部表在Google Drive中查询数据

    一旦可以查询它,就可以使用query将其持久化到BigQuery(如果外部表已经可以为您工作,则不必这样做):

    CREATE TABLE my\u dataset.persistend\u TABLE\u name
    如从my_external_table_指向google_驱动器中选择*;
    
    Hi Yun,在我使用Bigquery.jobs之前,我正忙于在Bigquery中首先测试这一点——我的“外部”表是否指向“谷歌”驱动器;与我的驱动器URI相同,即:(我删除了一些字符)我的问题是,即使我从创建表加载它,选择正确格式的驱动器,它也找不到表,但我使用的是完全相同的google帐户和所有内容,一旦它创建了一个空表,我点击外部资源,它就可以打开了。你试过了吗?Yep,我已经试过了,作为一个测试,我刚刚通过了控制台,创建了表,选择的驱动器使用了URI:。有了正确的ID,上面写着文件没有找到。我个人从来没有用过Gdrive做上传,最常见的是,人们使用谷歌云存储。如果你不能理解gdrive的故事,GCS是一个很好的选择。谢谢云,我想使用drive的唯一原因是因为它看起来很容易转换,它应该在上传时自动将文本/csv转换为google工作表,从那里我可以放心上传的数据将自动检测模式,而对于地面军事系统,上传时使用的delimeter是一个问题。我发现了驱动器的问题,它是权限驱动的,同一个帐户显然意味着什么。。。我不认为驱动API是最好的,考虑到它是免费的,几乎感觉lii Google正在把你推向付费服务,我不介意,但仍然很沮丧,谢谢你的帮助