我尝试使用流式insert_all方法使用ruby中的google-api-client gem将数据插入表中。
所以我开始在Bigquery中创建一个新表(读取和写入priveleges是正确的) 具有以下内容:
+-----+-----------+-------------+
| Row | person_id | person_name |
+-----+-----------+-------------+
| 1 | 1 | ABCD |
| 2 | 2 | EFGH |
| 3 | 3 | IJKL |
+-----+-----------+-------------+
这是我在ruby中的代码:(我今天早些时候发现tabledata.insert_all是tabledata.insertAll的ruby - google docs / example需要更新)
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 |
+-----+-----------+-------------+
那么,是什么给出的?我丢失了数据....(ID 11和id 5已经消失)请求的响应也没有错误。
有人可以告诉我,如果我做错了什么或为什么会这样?
非常感谢任何帮助。
谢谢,祝你有个美好的一天。
答案 0 :(得分:0)
发现这似乎与ui有关(行计数暂时不会填充,尝试提取表中的数据会导致错误“意外。请再试一次。”)。但是,实际存储数据并可以查询。谢谢你的帮助乔丹