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 更改为一个对象,并确保您没有rowsjson 级别,同时确保变量type 正确,因为BigQuery 非常严格,例如stringstringintegerfloat 如果你有的话。

$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 - 长时间延迟?

如何使用 BigQuery Streaming 获取插入的行数

从 InsertAll 中查看数据的延迟