编辑:修复 - 对于ruby使用“insert_all”而不是像api指定的“insertAll”。 ruby的api需要更新。
我正在使用v.6.4的google-api-client gem并试图创建一个流插入,但不断收到以下错误:
google_bigquery.rb:233:in undefined method `insertAll' for #<Google::APIClient::Resource:0xcbc974 NAME:tabledata> (NoMethodError)
我的代码如下:
def streaming_insert_data_in_table(table, dataset=DATASET)
body = {"rows"=>[
{"json"=> {"person_id"=>1, "name"=>"john"}},
{"json"=> {"person_id"=>2, "name"=>"doe"}},
]}
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
有人可以告诉我是否已为google-api-client gem创建了insetAll?我尝试'插入',因为这是表,数据集等使用并得到相同的错误..但我可以完全运行tabledata.list ..我已经尝试挖掘宝石源代码并没有得到随处可见。
我创建的身体对象是正确的还是我需要改变它?
非常感谢任何帮助。
提前致谢,祝你有个美好的一天。
答案 0 :(得分:1)
确定。所以修复它并更新问题中的代码。对于ruby:该方法称为“insert_all”。另请注意表格和表格。必须在insert_all之前创建schema。与“jobs.insert”方法相比,这个id会有所不同,如果表格不存在,它将创建表格