PostgreSQLの使い方メモ

その他

search_path

search_path設定

current_db=> SET search_path=users,orders,catalogs;
SET

search_path確認

current_db=> show search_path;
       search_path       
-------------------------
 users, orders, catalogs

ユーザー

ユーザー作成

current_db=> create user {username};

ユーザー更新

current_db=> ALTER USER {username} WITH PASSWORD '{password}';

ユーザー一覧

current_db=> \du
                                                                                                                          ロール一覧
    ロール名     |                                   属性                                   |                                                                          所属グルー
プ                                                                           
-----------------+--------------------------------------------------------------------------+------------------------------------------------------------------------------------
-----------------------------------------------------------------------------
 postgres        | ロール作成可, DB作成可                                                  +| {rds_superuser}
                 | パスワードの有効期限 infinity                                            | 
 rds_ad          | ログインできません                                                       | {}
 rds_iam         | ログインできません                                                       | {}
 rds_password    | ログインできません                                                       | {}
 rds_replication | ログインできません                                                       | {}
 rds_superuser   | ログインできません                                                       | {pg_read_all_data,pg_write_all_data,pg_monitor,pg_signal_backend,pg_checkpoint,pg_u
se_reserved_connections,pg_create_subscription,rds_replication,rds_password}
 rdsadmin        | スーパユーザ, ロール作成可, DB作成可, レプリケーション可, RLS のバイパス+| {}
                 | パスワードの有効期限 infinity                                            | 
 rdsproxyadmin   | パスワードの有効期限 infinity                                            | {}

現在のユーザー確認

current_db=> SELECT current_user;
 current_user 
--------------
 xxxxx

ログイン

psql -h {hostname} -U {username} -d {dbname} --password

データベース

データベース一覧

current_db=> \l
                                                データベース一覧
         名前         |  所有者  | エンコーディング |  照合順序   | Ctype(変換演算子) |       アクセス権限       
----------------------+----------+------------------+-------------+-------------------+--------------------------
 main                 | postgres | UTF8             | en_US.UTF-8 | en_US.UTF-8       | 
 postgres             | postgres | UTF8             | en_US.UTF-8 | en_US.UTF-8       | 
 rdsadmin             | rdsadmin | UTF8             | en_US.UTF-8 | en_US.UTF-8       | rdsadmin=CTc/rdsadmin
 template0            | rdsadmin | UTF8             | en_US.UTF-8 | en_US.UTF-8       | =c/rdsadmin             +
                      |          |                  |             |                   | rdsadmin=CTc/rdsadmin
 template1            | postgres | UTF8             | en_US.UTF-8 | en_US.UTF-8       | =c/postgres             +
                      |          |                  |             |                   | postgres=CTc/postgres

コマンドラインからの確認

% psql -l

データベース作成

% createdb {dbname}

データベース内でのCREATE権限付与

current_db=> GRANT CREATE ON DATABASE <dbname> TO <username>;
GRANT

データベースオーナーの変更(スーパーユーザーのみ)

ALTER DATABASE {dbname} OWNER TO {username};

スキーマ

スキーマ一覧

current_db=> \dn
        スキーマ一覧
  名前  |      所有者       
--------+-------------------
 public | pg_database_owner

現在のスキーマ確認

current_db=> select current_schema;
 current_schema 
----------------
 public

スキーマ作成

current_db=> create schema <schema name>;
CREATE SCHEMA

テーブル

タイプ作成、テーブル作成

CREATE TYPE orders.meeting_type AS ENUM ('google', 'zoom');

CREATE TYPE orders.meeting_state AS ENUM ('init', 'done', 'canceled');

create table orders.meetings(
  id SERIAL NOT NULL,
  order_id integer,
  meeting_type meeting_type,
  created_at timestamp,
  updated_at timestamp, 
  state meeting_state,
  schedule timestamp, 
  link varchar(255), 
  PRIMARY KEY (id)
);

タイプの確認

current_db=> \dT+ orders.meeting_type
                                               List of data types
 Schema |        Name         | Internal name | Size | Elements |    Owner     | Access privileges | Description 
--------+---------------------+---------------+------+----------+--------------+-------------------+-------------
 orders | orders.meeting_type | meeting_type  | 4    | google  +| xxx |                   | 
        |                     |               |      | zoom     |              |                   | 

テーブル一覧

current_db=> \dt
               リレーション一覧
 スキーマ |   名前   |    型    |    所有者    
----------+----------+----------+--------------
 orders   | meetings | テーブル | xxxxxx

テーブル定義の確認

current_db=> \d orders.meetings;
 id           | integer                     |          | not null      | nextval('orders.meetings_id_seq'::regclass)
 order_id     | integer                     |          |               | 

カラム追加

current_db=> ALTER TABLE "Meeting" ADD COLUMN eventLink text;

カラム変更

current_db=> ALTER TABLE "Meeting" RENAME COLUMN link TO videoLink;

DB参照中のプロセスをkill

SELECT 
    pg_terminate_backend(pid) 
FROM 
    pg_stat_activity 
WHERE 
    -- don't kill my own connection!
    pid <> pg_backend_pid()
    -- don't kill the connections to other databases
    AND datname = 'database_name'
    ;

拡張テーブル表示モードに切り替え

\x

関連記事

カテゴリー

アーカイブ

Lang »