さわらブログ

さわら(@xhiroga)の技術ブログ

Heroku Postgresでサンプルのデータベースを用意する

練習用に手頃なデータベースが欲しくて、しかもWeb上からアクセスしたいことってないですか?
Posgres SQLのデータのリストア用コマンドがローカル以外のDBを対象に取れたので、サンプルデータを投入することができました。めっちゃ便利だ。

仕組み

PosgreSQLには、データベースの中身をテキストなどの形式でバックアップする"pg_dump"コマンドと、その結果をリストアする"pg_restore"コマンドがある。
"pg_restore"コマンドの発行時、ホストやユーザー名などにHerokuで指定された値を入れると良い。それだけ。

やり方

基本的にはこの通りに進める

www.postgresqltutorial.com

違うのは"pg_restore"の引数。

$ pg_restore -d [Herokuが指定したDB名] -h [Herokuが指定したホスト名] -p 5432 -U [Herokuが指定したユーザー名] -W ./dvdrental.tar

Herokuの指定はダッシュボードで確認可能。

f:id:hiroga_cc:20171004224039p:plain

リストアが終わったら...(私の場合は数十秒くらいでした)
¥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に詳しい人なら普通に気づくのかもしれないね...。