Google api 将文件从Google驱动器加载到Bigquery
我有一个API,它在我的网站上获取一个加载的文件,并通过API将其与mimeType text/csv一起上传到Google Drive 这创造了奇迹,但是,我现在需要将该文件作为永久表加载到GoogleBigQuery中 我有两种方法: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
$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正在把你推向付费服务,我不介意,但仍然很沮丧,谢谢你的帮助