PostgreSQLにおけるデータベースの一覧表示と切り替え

PostgreSQLは、強力なオープンソースのオブジェクトリレーショナルデータベースシステムであり、データベースを効率的に管理するための豊富なツールと機能を提供します。データベース管理者であれバックエンド開発者であれ、データベースを一覧表示し、切り替える方法を知っていることは、マルチデータベース環境をナビゲートするための基礎です。

1. 前提条件

始める前に、次のことを確認してください:

  • PostgreSQLがあなたのシステムにインストールされていること(psql にアクセス可能であること)。

  • 適切な権限(例:スーパーユーザーまたは接続権を持つロール)があること。

  • 有効なユーザーを使用してPostgreSQLサーバーに認証できること。

2. PostgreSQLにおけるデータベースの一覧表示

🔍 方法1: psqlメタコマンドを使用

psqlインタラクティブターミナルを起動し、次を実行します:

l

または、拡張形式を使用します:

list

これにより、すべてのデータベースのリストが返されます:

  • 名前

  • 所有者

  • エンコーディング

  • 照合順序

  • Ctype

  • アクセス権限

方法2: SQLクエリを使用

あるいは、次のSQL文を実行します:

SELECT datname FROM pg_database WHERE datistemplate = false;

このクエリはテンプレートデータベース(template0、template1)を除外し、ユーザーが作成したデータベースを表示します。

🛠️ 方法3: コマンドラインシェル

psqlの外部で、ターミナルから:

psql -U postgres -c "l"

また、psql -lを使用することもできます:

psql -l

3. データベースの切り替え

他のRDBMS(例:MySQL)とは異なり、PostgreSQLは同じセッション内でデータベースを切り替えることをサポートしていませんUSE dbname;のようなコマンドを使用することはできません。

なぜ?

PostgreSQLはログイン時に特定のデータベースへの接続を確立します。別のデータベースにアクセスするには、切断して再接続する必要があります

推奨アプローチ:

現在のセッションを終了し、目的のデータベースに再接続します:

q -- Quit current psql session

次に:

psql -U username -d target_database

または直接:

psql -U username -d target_database -h hostname -p port

例:

psql -U admin -d salesdb

4. 効率的なマルチデータベースワークフローのためのヒント

a. パスワードなしで切り替えるための.pgpassを使用

認証を自動化するために.pgpassファイルを作成します:

hostname:port:database:username:password

正しい権限が設定されていることを確認してください:

chmod 600 ~/.pgpass

b. シェルスクリプトで自動化

一覧表示と切り替えを行うスクリプトを作成します:

#!/bin/bash
echo "Available Databases:"
psql -U postgres -c "l"
read -p "Enter target DB: " db
psql -U postgres -d "$db"

c. 環境変数を使用

デフォルトのDBとユーザーをエクスポートして、切り替えを迅速に行います:

export PGDATABASE=mydb
export PGUSER=myuser
psql

5. PgAdminおよびその他のGUIとの連携

PgAdmin内で:

  1. サーバーグループをクリックします。

  2. 右クリック → データベースに接続

  3. データベースを切り替えるためにクエリツールのドロップダウンを使用します(DBごとに新しいタブを作成します)。

多くのツール(DBeaver、DataGrip)は、タブ付きのデータベースビューで複数の接続を許可します。

6. ボーナス: 現在のデータベースを確認

強調表示されたpsql内で、現在のデータベースを見つけます:

SELECT current_database();

または次を使用:

conninfo

結論

PostgreSQLは、他のSQLエンジンのようにセッション内でのデータベース切り替えを許可していませんが、その堅牢な接続モデルは、クリーンで一貫したアクセス制御とリソース管理を確保します。リスト表示技術をマスターし、スマートな再接続プラクティスを採用することで、CLI、GUI、またはスクリプトを介して、どの環境でもPostgreSQLデータベースを効率的に管理し、切り替えることができます。