如何在Ruby Rails上使用Bigquery流媒体插件

时间:2013-11-26 10:42:33

标签: ruby google-bigquery google-api-client google-api-ruby-client

编辑:修复 - 对于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 ..我已经尝试挖掘宝石源代码并没有得到随处可见。

我创建的身体对象是正确的还是我需要改变它?

非常感谢任何帮助。

提前致谢,祝你有个美好的一天。

1 个答案:

答案 0 :(得分:1)

确定。所以修复它并更新问题中的代码。对于ruby:该方法称为“insert_all”。另请注意表格和表格。必须在insert_all之前创建schema。与“jobs.insert”方法相比,这个id会有所不同,如果表格不存在,它将创建表格