Heroku Postgresでサンプルのデータベースを用意する
練習用に手頃なデータベースが欲しくて、しかもWeb上からアクセスしたいことってないですか?
Posgres SQLのデータのリストア用コマンドがローカル以外のDBを対象に取れたので、サンプルデータを投入することができました。めっちゃ便利だ。
仕組み
PosgreSQLには、データベースの中身をテキストなどの形式でバックアップする"pg_dump"コマンドと、その結果をリストアする"pg_restore"コマンドがある。
"pg_restore"コマンドの発行時、ホストやユーザー名などにHerokuで指定された値を入れると良い。それだけ。
やり方
基本的にはこの通りに進める
違うのは"pg_restore"の引数。
$ pg_restore -d [Herokuが指定したDB名] -h [Herokuが指定したホスト名] -p 5432 -U [Herokuが指定したユーザー名] -W ./dvdrental.tar
Herokuの指定はダッシュボードで確認可能。

リストアが終わったら...(私の場合は数十秒くらいでした)
¥dtでテーブルを確認。ついでに中身も確認。
::DATABASE=> \dt
List of relations
Schema | Name | Type | Owner
--------+---------------+-------+----------------
public | actor | table | [Heroku Posgresのユーザ名]
public | address | table | [Heroku Posgresのユーザ名]
public | category | table | [Heroku Posgresのユーザ名]
public | city | table | [Heroku Posgresのユーザ名]
public | country | table | [Heroku Posgresのユーザ名]
public | customer | table | [Heroku Posgresのユーザ名]
public | film | table | [Heroku Posgresのユーザ名]
public | film_actor | table | [Heroku Posgresのユーザ名]
public | film_category | table | [Heroku Posgresのユーザ名]
public | inventory | table | [Heroku Posgresのユーザ名]
public | language | table | [Heroku Posgresのユーザ名]
public | payment | table | [Heroku Posgresのユーザ名]
public | rental | table | [Heroku Posgresのユーザ名]
public | staff | table | [Heroku Posgresのユーザ名]
public | store | table | [Heroku Posgresのユーザ名]
(15 rows)
::DATABASE=> select * from actor fetch first 10 rows only;
actor_id | first_name | last_name | last_update
----------+------------+--------------+------------------------
1 | Penelope | Guiness | 2013-05-26 14:47:57.62
2 | Nick | Wahlberg | 2013-05-26 14:47:57.62
3 | Ed | Chase | 2013-05-26 14:47:57.62
4 | Jennifer | Davis | 2013-05-26 14:47:57.62
5 | Johnny | Lollobrigida | 2013-05-26 14:47:57.62
6 | Bette | Nicholson | 2013-05-26 14:47:57.62
7 | Grace | Mostel | 2013-05-26 14:47:57.62
8 | Matthew | Johansson | 2013-05-26 14:47:57.62
9 | Joe | Swank | 2013-05-26 14:47:57.62
10 | Christian | Gable | 2013-05-26 14:47:57.62
(10 rows)
::DATABASE=> \q
ばっちり。
DBに詳しい人なら普通に気づくのかもしれないね...。