我试图使用流式insert_all方法在Ruby中使用google-api-client gem将数据插入到表中。BigQuery streaming insertAll似乎会丢失数据 - 为什么?
于是我开始创建BigQuery中(读写priveleges是正确的)新表 具有以下内容:
+-----+-----------+-------------+
| Row | person_id | person_name |
+-----+-----------+-------------+
| 1 | 1 | ABCD |
| 2 | 2 | EFGH |
| 3 | 3 | IJKL |
+-----+-----------+-------------+
这是我在Ruby代码:(我今天早些时候发现资料表。 insert_all是红宝石的tabledata.insertAll - 第一次谷歌文档/例如需要更新)
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消失了)请求的响应也没有错误。
有人可以告诉我,如果我做错了什么或为什么发生这种情况?
任何帮助,非常感谢。
谢谢你,祝你有美好的一天。
你介意分享你的项目和桌面ID吗?这不是预期的。 –
谢谢乔丹,我可以通过电子邮件将这些邮件发送给您吗?如果是这样,我要发送到哪个地址? – user2989892
tigani at google.com –