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 | RubyGems.org | your community gem host

これを見ると、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アプリ名を入力すると、アップロードが開始される。


Heroku | Dev Center | Importing and Exporting Your Data Heroku | Push and Pull Databases To and From Heroku Ruby 1.8.7とjson1.5.1 x86-mswin32で、「msvcrt-ruby191.dllが見つからない」エラー - モンテカットの開発日記