0

我正在尝试使用流式 insert_all 方法使用 ruby​​ 中的 google-api-client gem 将数据插入到表中。

所以我首先在 Bigquery 中创建一个新表(读写权限是正确的),内容如下:

+-----+-----------+-------------+
| Row | person_id | person_name |
+-----+-----------+-------------+
|   1 |         1 | ABCD        |   
|   2 |         2 | EFGH        |   
|   3 |         3 | IJKL        |   
+-----+-----------+-------------+

这是我在 ruby​​ 中的代码:(我今天早些时候发现 tabledata.insert_all 是 tabledata.insertAll 的 ruby​​ - 需要更新谷歌文档/示例)

def streaming_insert_data_in_table(table, dataset=DATASET)
    body = {"rows"=>[ 
      {"json"=> {"person_id"=>10,"person_name"=>"george"}},
      {"json"=> {"person_id"=>11,"person_name"=>"washington"}}
    ]}

    result = @client.execute(
      :api_method=> @bigquery.tabledata.insert_all,
      :parameters=> {
          :projectId=> @project_id.to_s,
          :datasetId=> dataset,
          :tableId=>table},
      :body_object=>body,
    )
    puts result.body
end

所以我第一次运行我的代码,一切看起来都很好。我在 Bigquery 的表格中看到了这一点:

 +-----+-----------+-------------+
 | Row | person_id | person_name |
 +-----+-----------+-------------+
 |   1 |         1 | ABCD        |
 |   2 |         2 | EFGH        |
 |   3 |         3 | IJKL        |
 |   4 |        10 | george      |
 |   5 |        11 | washington  |
 +-----+-----------+-------------+

然后我将方法中的数据更改为:

body = {"rows"=>[ 
      {"json"=> {"person_id"=>5,"person_name"=>"john"}},
      {"json"=> {"person_id"=>6,"person_name"=>"kennedy"}}
    ]}

运行该方法并在 Bigquery 中获取它:

 +-----+-----------+-------------+
 | Row | person_id | person_name |
 +-----+-----------+-------------+
 |   1 |         1 | ABCD        |
 |   2 |         2 | EFGH        |
 |   3 |         3 | IJKL        |
 |   4 |        10 | george      |
 |   5 |         6 | kennedy     |
 +-----+-----------+-------------+

那么,什么给了?我丢失了数据....(ids 11 和 id 5 已经消失)请求的响应也没有错误。

有人可以告诉我我做错了什么或者为什么会这样吗?

任何帮助深表感谢。

谢谢,祝你有美好的一天。

4

1 回答 1

0

发现这似乎与 ui 有关(行数暂时不会填充,尝试提取表中的数据会导致错误“意外。请重试。”)。然而,数据实际上是被存储的并且可以被查询。感谢乔丹的帮助

于 2013-12-02T01:58:57.240 回答