0

編集: 修正済み - Ruby では、API が指定するように「insertAll」の代わりに「insert_all」を使用します。ruby の api を更新する必要があります。

v 0.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

insetAll が google-api-client gem 用に作成されているかどうか誰か教えてもらえますか? テーブル、データセットなどが使用するものであるため、「挿入」を試みましたが、同じエラーが発生します..しかし、tabledata.listを完全に正常に実行できます..宝石のソースコードを掘り下げてみましたが、取得できませんでしたそれとどこでも。

作成した body オブジェクトは正しいですか、それとも変更する必要がありますか?

どんな助けでも大歓迎です。

前もって感謝し、素晴らしい一日を。

4

1 に答える 1

1

Ok。それで修正し、質問のコードを更新しました。ruby の場合: メソッドは「insert_all」と呼ばれます。また、insert_all の前にテーブルとスキーマを作成する必要があることにも注意してください。この ID は、テーブルが存在しない場合にテーブルを作成する「jobs.insert」メソッドと比較すると異なります。

于 2013-11-26T21:22:37.700 に答える