我有一个API,该API可以在我的网站上获取加载的文件,并通过该API将带有mimeType text / csv的文件上传到Google云端硬盘。
这创造并产生了奇迹,但是,我现在需要将该文件作为永久表加载到Google Bigquery中。
我有两种方法:
首选:获取上传的文件并将mimeType修改为Google表格-我认为驱动器足够聪明,可以用csv做到这一点,但显然不是-也许有办法。
将文本/ 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;
}
使用以下两种方法获取以下内容-但是,头奖将是使第1步正常工作,将文件类型更改为Google表格-我已经具有设置标题的更新功能,因此如果需要添加它我可以
"Invalid source URI: https://drive.google.com/file/d/1Zt6OMQqE3rj1PJe4HlokQ4LPNfOPBHfB/
答案 0 :(得分:1)
目前不支持将数据从Google云端硬盘加载到BigQuery中,但是您可以使用外部表查询Google云端硬盘中的数据。
按照Querying Google Drive data进行操作,一旦您可以对其进行查询,就可以使用查询将其持久化到BigQuery(或者如果外部表已经为您服务,则不必这样做):
CREATE TABLE my_dataset.persisted_table_name
AS SELECT * FROM my_external_table_pointing_to_google_drive;