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に詳しい人なら普通に気づくのかもしれないね...。