見出し画像

手を動かすPostgreSQL①-サンプルDBのインストール-

ここまでいくつかの試験の合格体験記を書いてきたこのnoteですが、OSS-DB Goldの勉強が進まずネタが切れたので、今一度原点に立ち戻る意味も込めて今回から複数回に分けてPostgreSQLの基本的な作業について手を動かしつつ学んでいきたいと思います。
範囲としてはOSS-DB Silverの内容が主になるとは思いますが、場合によっては逸脱するかもしれません。
サンプルデータベースとして、PostgreSQL Tutorialで公開されているDVDレンタル屋のものを使用します。

初回ということで、PostgreSQLにossdbデータベースをロードする作業をやってみようと思います。

下準備

お使いの端末にPostgreSQLをインストールしてください。実運用ではLinuxを使用することが多いと思われますが、mac, windows,何でも構いません。

postgres@localhost:~$ psql -l

をコマンドラインで実行して、

List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | 
 template0 | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(3 rows)

の3つのデータベースが作成されていれば成功です。

この時、

psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directory
	Is the server running locally and accepting connections on that socket?

みたいなエラーが出た場合にはpostgreSQLが起動できていない可能性が高いです。(本当にインストールからやる人はほぼ間違いなく出るエラー)
その時には、

brew services start postgresql

などでpostgresqlを起動することができます。
なお、これを実行した時に

Error: Failure while executing; `/bin/launchctl bootstrap gui/501 [ディレクトリ] exited with 5.

こんな感じのエラーコードが出た時にはtmpファイルの第三者に対する権限がないので、open /tmpからtmpファイルの権限をいじるとどうにかなるかもしれません。

その上で上のリンクからdvdrental.tarをダウンロードすれば下準備は完了です。

データベースを作る

こんどはオプション無しでpsqlを実行します。

postgres@localhost:~$ psql
psql (12.12 (Ubuntu 12.12-0ubuntu0.20.04.1))
Type "help" for help.

postgres=# 

こんな感じになるので、CREATE DATABASEコマンドでデータベースossdbを作成します。最後の;を忘れないでください。

postgres=# CREATE DATABASE ossdb;
CREATE DATABASE

これでデータベースクラスタにデータベースossdbができました。

\qかexitと打ち込むともとの地点に戻れるので、その上で以下のようなコマンドを打ちます。

postgres@localhost:~$ pg_restore -U postgres -d ossdb /home/meip-users/tmp/dvdrental.tar

この場合の-Uは実行するユーザの名前(スーパーユーザだと良し)、-dはロードするデータベースの名前を指します。ここではossdbと入力しましょう。その後に空白を開けてダウンロードしたtarファイルのパスを入力します。ここのパスは本当に適当で良くて、元のtarファイルは作業が終わったら消してしまって構いません。できたら、下のコマンドでossdbデータベースに入りましょう。
察しの良い方はわかるかもしれませんが、このpg_restoreというコマンドは本来はバックアップからデータベースを復元するために用いられるコマンドです。しかしながら、今回のような使い方もできます。

postgres@localhost:~$ psql ossdb

入れたら何でもいいですがデータが参照できることを確認してみましょう。

チュートリアルについてきたデータベースの図を見て、今回はcategoryテーブルを表示してみようと思います。以下のコマンドを打ち込んでください。

ossdb=# SELECT * FROM category;
 category_id |    name     |     last_update     
-------------+-------------+---------------------
           1 | Action      | 2006-02-15 09:46:27
           2 | Animation   | 2006-02-15 09:46:27
           3 | Children    | 2006-02-15 09:46:27
           4 | Classics    | 2006-02-15 09:46:27
           5 | Comedy      | 2006-02-15 09:46:27
           6 | Documentary | 2006-02-15 09:46:27
           7 | Drama       | 2006-02-15 09:46:27
           8 | Family      | 2006-02-15 09:46:27
           9 | Foreign     | 2006-02-15 09:46:27
          10 | Games       | 2006-02-15 09:46:27
          11 | Horror      | 2006-02-15 09:46:27
          12 | Music       | 2006-02-15 09:46:27
          13 | New         | 2006-02-15 09:46:27
          14 | Sci-Fi      | 2006-02-15 09:46:27
          15 | Sports      | 2006-02-15 09:46:27
          16 | Travel      | 2006-02-15 09:46:27
(16 rows)

ossdb=# 

上のような出力になれば成功です。もちろん他のテーブル名を打ち込むとそのテーブルが出力されます。


次回の記事はこちら

この記事が気に入ったらサポートをしてみませんか?