LoginSignup
2
2

More than 5 years have passed since last update.

Parseにデータをインポート

Last updated at Posted at 2015-04-04

HTTPリクエストで

RubyでParse(parse.com)を利用する場合は、公式SDKがないので3rdパーティのgemを使う。
parse-ruby-clientが有名かと。
https://github.com/adelevie/parse-ruby-client
ただし、最近更新されていなくて、GeoQueriesが未実装のままになってる。

gemを使ってデータをParseにUPするのは簡単。
1. Parse.initする
2. Parse::Object.newでインスタンス生成
3. インスタンスのsaveメソッドを呼ぶ

Parse.init :application_id => "",
           :api_key        => "",
           :quiet           => true

hoge.each do |h|
  s = Parse::Object.new("hogehoge")
  s["name"] = h["name"]
  s["point"] = Parse::GeoPoint.new({
                                    "latitude" => h["latitude"],
                                    "longitude" => h["longitude"]
                                   })
  s.save
end

ただ、このループ回数が多いと、毎度HTTPリクエストしててデータ数が多い場合に長時間になって辛い。

インポートで

Parseにはデータのインポート機能がある。
https://parse.com/docs/data#data-import

インポートはcsv or jsonで、今回はjsonを選択。
\nがなんだとか書いてあるが、osxなら問題ない。

手順としては、3つ。
1. 配列とハッシュ作ってデータ入れる
2. 前後におまけを付ける
3. ParseのサイトからUPする

s2 = []

hoge.each do |h|
  s = Hash.new
  s["name"] = h["name"]
  s["point"] = Parse::GeoPoint.new({
                                    "latitude" => h["latitude"],
                                    "longitude" => h["longitude"]
                                   })
  s2 << s
end

data = "{ \"results\": " + s2.to_json + "}"#おまけ付加
File.write("hoge.json", data)

Parse::Object.new("hogehoge")のままでもJSONは生成できるが、そのJSONにはclassNameが入っていて、ParseにUPしてもvalidationエラーになるので、ハッシュに変える。

GeoPointがそのままなのは、これをHashにするとString(中身はJSON)として扱われてしまうため。
GeoPointはvalidationエラーにならない。

あとはこれをParseのサイトにUPしてインポート完了を待つだけ。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2