5.1 対話型ターミナル

psqlの以下の機能を確認します。

  • psqlコマンドのパラメータ
  • psqlのメタコマンド

psqlコマンドのパラメータ

OSのpostgresユーザでログインした状態で、psqlコマンドのオプション -l, -c, -f の機能を確認します。

[postgres@host1 ~]$ psql -l
                                         データベース一覧
   名前    |  所有者  | エンコーディング |  照合順序   | Ctype(変換演算子) |
 アクセス権限
-----------+----------+------------------+-------------+-------------------+----
-------------------
 ossdb     | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       |
 postgres  | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       |
 template0 | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       | =c/
postgres          +
           |          |                  |             |                   | pos
tgres=CTc/postgres
 template1 | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       | =c/
postgres          +
           |          |                  |             |                   | pos
tgres=CTc/postgres
(4 行)

[postgres@host1 ~]$ psql -c "SELECT CURRENT_DATE;"
 current_date
--------------
 2024-07-23
(1 行)

[postgres@host1 ~]$ echo "SELECT * FROM prod ORDER BY price;" > test1.sql
[postgres@host1 ~]$ psql -f test1.sql ossdb
 prod_id | prod_name | price
---------+-----------+-------
       4 | バナナ    |    30
       1 | みかん    |    52
       2 | りんご    |    72
       3 | メロン    |   100
(4 行)

[postgres@host1 ~]$

最初に、-l オプションでデータベースを一覧表示し、次に、-c オプションで現在の日付を表示するSELECT文を実行しています。続いて、OSのechoコマンドでSQL文を入力したtest1.sqlファイルを作成し、psqlの -f オプションで実行します。このSQL文はossdbデータベースのprod表を使用するため、psqlコマンドでossdbを指定しています。

psqlのメタコマンド

psqlでossdbデータベースに接続し、メタコマンドの\conninfo, \h, \i, \!, \passwordの機能を確認します。

[postgres@host1 ~]$ psql ossdb
psql (13.14)
"help"でヘルプを表示します。

ossdb=# \conninfo
データベース"ossdb"にユーザ"postgres"として、"/var/run/postgresql"のソケットを介してポート"5432"で接続しています。
ossdb=# \h BEGIN
コマンド:    BEGIN
説明: トランザクションブロックを開始します。
書式:
BEGIN [ WORK | TRANSACTION ] [ トランザクションのモード [, ...] ]

トランザクションのモードは以下の通りです:

    ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }
    READ WRITE | READ ONLY
    [ NOT ] DEFERRABLE

URL: https://www.postgresql.org/docs/13/sql-begin.html

ossdb=# \i test1.sql
 prod_id | prod_name | price
---------+-----------+-------
       4 | バナナ    |    30
       1 | みかん    |    52
       2 | りんご    |    72
       3 | メロン    |   100
(4 行)

ossdb=# \! pwd
/home/postgres
ossdb=# \! ps
    PID TTY          TIME CMD
   1876 pts/0    00:00:00 bash
   2647 pts/0    00:00:00 psql
   2654 pts/0    00:00:00 ps
ossdb=# \password
ユーザー"postgres"の新しいパスワードを入力してください: ※postgresユーザのパスワードを入力
もう一度入力してください: ※再度postgresユーザのパスワードを入力
ossdb=#

psqlコマンド起動後、最初に\conninfoメタコマンドで現在のデータベースへの接続状況を確認しています。ホスト名を省略しているため、ローカルホストのサーバにUnixドメインソケットで接続した状態になっています。次に、\hメタコマンドでSQLのBEGIN文のヘルプを表示しています。
次に、\iメタコマンドでtest1.sqlファイルのSQL文を実行しています。次に、\!メタコマンドでOSのシェルコマンドのpwdとpsが実行できることを確認しています。最後に、\passwordメタコマンドでpostgresユーザのパスワードを設定しています。