BigQuery [PHP] InsertAll:未显示任何错误,但 BigQuery 表不受插入值的影响
Posted
技术标签:
【中文标题】BigQuery [PHP] InsertAll:未显示任何错误,但 BigQuery 表不受插入值的影响【英文标题】:BigQuery [PHP] InsertAll : Not showing any error but BigQuery Table not affected with the inserted values 【发布时间】:2014-03-12 08:00:34 【问题描述】:我在链接BigQuery [php] InsertAll Error: No records present in table data append request 上遇到了同样的问题。我遵循了解决方案,错误已被删除,但结果在我的代码所在的 BigQuery 表上不受影响:
$data = '"rows":["json":"userId":"GR-003","state":"Pune","sales":"350"]';
$data1 = json_decode($data);
try
$rows = array();
$row = new Google_Service_Bigquery_TableDataInsertAllRequestRows;
$row->setJson($data1);
$row->setInsertId('9');
$rows[0] = $row;
$request = new Google_Service_Bigquery_TableDataInsertAllRequest;
$request->setKind('bigquery#tableDataInsertAllRequest');
$request->setRows($rows);
$service->tabledata->insertAll(PROJECT_ID, DATASET_ID , 'sample_table', $request);
catch (Exception $e)
echo $e->getMessage();
【问题讨论】:
【参考方案1】:您向大查询发送了错误的对象。将$data
更改为一个对象,并确保您没有rows
和json
级别,同时确保变量type
正确,因为BigQuery 非常严格,例如string
、string
、 integer
或 float
如果你有的话。
$rows = array();
foreach()
$obj = new StdClass();
$obj->userId='GR-003';
$obj->state='Pune';
$obj->sales=350;
$row = new Google_Service_Bigquery_TableDataInsertAllRequestRows;
$row->setJson($obj);
$row->setInsertId('9');
$rows[] = $row;
【讨论】:
让我知道如果我们要插入多行,那么对象将如何?我们可以获取对象数组并将该参数提供给 setJson() 吗? 不,您需要为每个对象创建新的 $rows。请参阅我的更新答案。顺便问一下,你在哪里? 我来自印度孟买以上是关于BigQuery [PHP] InsertAll:未显示任何错误,但 BigQuery 表不受插入值的影响的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 table.insertall() 将任何数据上传到 bigquery
BigQuery - 时间戳偏移不适用于 insertAll / Streaming?
数据流导出到 Bigquery:insertAll 错误,无效的表引用
Steaming insert / insertAll - 长时间延迟?