PostgreSQLでのデータベースのリストと切り替え
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 -l3. データベースの切り替え
他の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 salesdb4. 効率的なマルチデータベースワークフローのためのヒント
a. パスワードなしで切り替えるための.pgpassを使用
認証を自動化するために.pgpassファイルを作成します:
hostname:port:database:username:password正しい権限が設定されていることを確認してください:
chmod 600 ~/.pgpassb. シェルスクリプトで自動化
一覧表示と切り替えを行うスクリプトを作成します:
#!/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
psql5. PgAdminおよびその他のGUIとの連携
PgAdmin内で:
サーバーグループをクリックします。
右クリック → データベースに接続。
データベースを切り替えるためにクエリツールのドロップダウンを使用します(DBごとに新しいタブを作成します)。
多くのツール(DBeaver、DataGrip)は、タブ付きのデータベースビューで複数の接続を許可します。
6. ボーナス: 現在のデータベースを確認
強調表示されたpsql内で、現在のデータベースを見つけます:
SELECT current_database();または次を使用:
conninfo結論
PostgreSQLは、他のSQLエンジンのようにセッション内でのデータベース切り替えを許可していませんが、その堅牢な接続モデルは、クリーンで一貫したアクセス制御とリソース管理を確保します。リスト表示技術をマスターし、スマートな再接続プラクティスを採用することで、CLI、GUI、またはスクリプトを介して、どの環境でもPostgreSQLデータベースを効率的に管理し、切り替えることができます。


