2011-02-22
HerokuでDBのデータをダウンロードしたりアップロードしたり
Herokuでデータベース上のデータを、主にSQLite3を使用してダウンロードしたりアップロードする手順のメモ。
インストール
まずHerokuにデータベースファイルをアップロードしたり、Herokuからダウンロードしたりするには「taps」というgemが必要になるのでインストールする。
これをインストールすると、rack、sequel、sinatra、sqlite3、sqlite3-rubyなどが一緒にインストールされるので、gemの管理に気を使っている場合は注意が必要。
$ gem install taps
ちなみに、こういう依存関係のgemを対象gemのインストール前に知る方法ってあるのかな?
gem dependency コマンドはインストール後のgemの依存関係を表示してくれるけど、インストール前に何が一緒にインストールされるのかはわからない。
とググってたら、いちおうRubyGemsのサイトに行けば調べられるみたい。
これを見ると、tapsをインストールすると、上記の他にrest-clientやjsonも一緒にインストールされるっぽい。たしかにgem listしてみたら入ってた。毎回こうやってRubyGemsのサイトを探して見るしかないのかな? gemコマンドから調べられると嬉しいんだけど…
とりあえず、tapsをインストールできたら準備完了。
ダウンロード
Heroku上のDBファイルを、ローカルにダウンロードするには以下のように heroku db:pull コマンドを実行する。
$ heroku db:pull sqlite://保存したいファイル名 --app Herokuアプリ名 $ heroku db:pull sqlite://dump.sqlite3 --app heroku-hello-world
すると、Herokuさんが「マジで実行するならアプリ名もっかい入力して?」と聞いてくるので、もう一度Herokuアプリ名をタイプしてエンターを押すと、ダウンロードが開始される。で、ローカルのカレントディレクトリに「dump.sqlite3」が生成される。
アップロード
ローカルのDBファイル(.sqlite3ファイル)を、Heroku上にアップロードするには以下のように heroku db:push コマンドを実行する。
$ heroku db:push sqlite://現在のディレクトリからのDBファイルへの相対パス --app Herokuアプリ名 $ heroku db:push sqlite://db/development.sqlite3 --app heroku-hello-world
すると、Herokuさんが「マジで実行するならアプリ名もっかい入力して?」と聞いてくるので、もう一度Herokuアプリ名をタイプしてエンターを押すと、アップロードが開始される。アップロードされたDBファイルの確認方法は・・・どうすんだろうw Herokuアプリを実行してみる以外に確認する方法あるのかな。heroku consoleとか?
とまぁこんな感じで簡単にDBファイルのアップロードやダウンロードが出来る便利なヘロクさんステキ。
Windowsの場合
Windowsの場合は、上記の各コマンドを実行すると、エラーが出る場合がある。そのエラーが以下のどちらかの場合は回避できる。
sqlite3.dllが見つからない
ruby.exe - エントリ ポイントが見つかりません
プロシージャ エントリ ポイント sqlite3_column_database_name がダイナミック リンク ライブラリ sqlite3.dll から見つかりませんでした。
このエラーの場合は「sqlite3.dll」をダンロードしてきてインストールすればおk
SQLite公式サイトのダウンロードページから「Precompiled Binaries For Windows」の中の「sqlite-dll-win32-x86-3070500.zip」をダウンロードする。
ファイルを解凍した中から「sqlite3.dll」をパスの通った場所にコピーする。(例:C:\Ruby187\bin)
これでおk
msvcrt-ruby191.dllが見つからない
ruby.exe - システム エラー
コンピューターに msvcrt-ruby191.dll がないため、プログラムを開始できません。この問題を解決するには、プログラムを再インストールしてみてください。
このエラーの場合は、以下の条件の場合に起こる模様。この記事がとても参考になった。感謝。
- Ruby 1.8系を使用していて、インストールされている「json gem」のバージョンが1.5系の場合
で、回避方法はjson gemのバージョンを1.4.6に下げる。ただし、ほかのgemとの依存関係で1.5系を要求されていると、そのgemが使えなくなる恐れがあるので、バージョンダウンする場合はそこらへん注意。
$ gem list json $ gem uninstall json $ gem install json --version 1.4.6
これでエラーが出ずに使えるようになるはず。
(via) Heroku | Dev Center | Importing and Exporting Your Data
(via) Heroku | Push and Pull Databases To and From Heroku
(via) Ruby 1.8.7とjson1.5.1 x86-mswin32で、「msvcrt-ruby191.dllが見つからない」エラー - モンテカットの開発日記
- 158 http://pipes.yahoo.com/pipes/pipe.info?_id=tDfBdGWF3RGl9XNm1L3fcQ
- 71 http://www.google.co.jp/search?sourceid=chrome&ie=UTF-8&q=heroku+db+ダウンロード
- 69 http://search.yahoo.co.jp/search?p=プロシージャエントリポイントsqlite3&search.x=1&fr=top_ga1_sa&tid=top_ga1_sa&ei=UTF-8&aq=&oq=
- 53 http://www.google.co.jp/url?sa=t&source=web&cd=1&ved=0CBgQFjAA&url=http://d.hatena.ne.jp/ruedap/20110222/ruby_heroku_database_sqlite3_download_upload&rct=j&q=ruby プロシージャエン??
- 49 http://www.google.co.jp/url?sa=t&rct=j&q=heroku sqlite&source=web&cd=1&ved=0CCMQFjAA&url=http://d.hatena.ne.jp/ruedap/20110222/ruby_heroku_database_sqlite3_download_upload&ei=Z22ETp-jKIjMmAWtgPEb&usg=AFQjCNGEPGywCjioFE3BnmW3u9C_TujGkQ
- 46 http://blog.cyan-project.com
- 43 http://www.google.co.jp/url?sa=t&rct=j&q=heroku データベース&source=web&cd=3&ved=0CDgQFjAC&url=http://d.hatena.ne.jp/ruedap/20110222/ruby_heroku_database_sqlite3_download_upload&ei=1K-mToLKL_HymAWtqJ
- 37 http://www.google.co.jp/url?sa=t&rct=j&q=heroku db&source=web&cd=3&ved=0CD4QFjAC&url=http://d.hatena.ne.jp/ruedap/20110222/ruby_heroku_database_sqlite3_download_upload&ctbs=lr:lang_1ja&ei=6R6kTtqiDLCCmQX9i6mgCQ&usg=AFQjCNGEPGywCjioFE3BnmW3
- 36 http://www.google.co.jp/url?sa=t&source=web&cd=1&ved=0CBkQFjAA&url=http://d.hatena.ne.jp/ruedap/20110222/ruby_heroku_database_sqlite3_download_upload&rct=j&q=heroku データベース ダウ%
- 29 http://d.hatena.ne.jp/yatmsu/20110912/1315829744




